์ฝ๋์ฉ๋๋ก ์ด๋ฏธ์ง ์ฌ๋ฆผ.
๋ณต๋ถ์ฉ๋๋ก ์ฝ๋ ์ฌ๋ฆผ.
//FocusedButton์ ์ธ์คํด์ค๋ ํ๋ฒ์ 1๊ฐ๋ง ์ฌ์ฉํ๋๋ก ๊ถ์ฅ๋๋ค.
public class FocusedButton {
private Transform _originalParent; //ํฌ์ปค์ค ๋๊ธฐ ์ ๋ถ๋ชจ ์ค๋ธ์ ํธ
private int _originalSiblingIndex; //ํฌ์ปค์ค ๋๊ธฐ ์ ๋ถ๋ชจ ์ค๋ธ์ ํธ์์์ ์์ ์์
private Transform _focusedObject;
private Button _focusedButton;
private UnityAction _onClickButtonAction;
private GameObject _emptyObjForLayout;
//์ค๋ธ์ ํธ๋ฅผ ์ฎ๊ฒจ๊ฐ๋๊ณผ์ ์์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ๋ฑ์ด ๊นจ์ง๋๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋น ์ค๋ธ์ ํธ ํ๋ ์ถ๊ฐํด์ค๋ค
public FocusedButton(Transform focusObj, Button refButton, UnityAction action) {
_focusedObject = focusObj;
_focusedButton = refButton;
_onClickButtonAction = action;
_originalParent = _focusedObject.parent;
_originalSiblingIndex = _focusedObject.GetSiblingIndex();
_focusedButton.onClick.AddListener(OnClickFocusedButton);
}
//ํฌ์ปค์ค ๋์์ ์ค๋ฒ๋ ์ด UI ์์ ์ฌ๋ ค๋๋ค
public void SetFocus(Transform focusPlane) {
_focusedObject.SetParent(focusPlane.transform);
_emptyObjForLayout = Global_ResourceLoader.Instance.LoadEmptyUIObject(_originalParent);
_emptyObjForLayout.transform.SetSiblingIndex(_originalSiblingIndex);
}
private void ResetFocus() {
if (_emptyObjForLayout != null) {
Destroy(_emptyObjForLayout);
}
if (_originalParent == null) { //์๋ ๋ถ๋ชจ๊ฐ ์์๋ ์ค๋ธ์ ํธ๋ ๊ทธ๋ฅ ์ญ์
Destroy(_focusedObject);
} else {
_focusedObject.SetParent(_originalParent);
_focusedObject.SetSiblingIndex(_originalSiblingIndex);
}
}
private void OnClickFocusedButton() {
ResetFocus();
_focusedButton.onClick.RemoveListener(OnClickFocusedButton);
_onClickButtonAction?.Invoke();
}
}
๋์ถฉ ์ฝ๋ ์ค๋ช :
๊ฐ๋ฆผํ์์ ๋ฒํผ์ ์ฎ๊ฒจ์ค๊ณ , ํด๋น ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฒํผ์ ์์์น ์ํจ ํ ๋ฒํผ์ ์๋ ๋์์ ์ํํจ.
focusObject์ focusButton์ด ๋๋ ์ด์ ๋, ๊ฐ๋์ฉ ํฐ์น์์ญ ๊ฐ์ ์ ์ํด [๋ฒํผ ์ด๋ฏธ์ง ์ค๋ธ์ ํธ]์, [์ค์ ํฐ์น์ ๋ ฅ์ ๋ฐ๋ย ํฌ๋ช ๋ฒํผ]์ ๋ถ๋ฆฌํ๋๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฌธ์.
ํฌ๋ช ๋ฒํผ๋ง ๊ฐ๋ฆผํ ์๋ก ์ฌ๋ผ์ค๋ฉด ๊ณค๋ํ๋ฏ๋ก, ์ต์์์ค๋ธ์ ํธ์ ๋ฒํผ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๊ฐ ํ๋ผ๋ฏธํฐ๋ก ๋๊น.
๋ฒํผ์ ๋ณต์ฌํด์ ๊ฐ์ ธ์ค์ง์๊ณ ์ด๋์์ผ์ ๊ฐ์ ธ์๊ธฐ๋๋ฌธ์, ์๋ ์๋ฆฌ๊ฐ ์ด๋์ง ๊ธฐ์ตํด์ค์ผ๋จ.
๋ ์ด์์ ์ปดํฌ๋ํธ๊ฐ ๊นจ์ง์ง ์๊ฒํ๊ธฐ์ํด์ ์ด๋ํ ๋ ๋น ์ค๋ธ์ ํธ๋ฅผ ํ๋ ๋๊ณ ์์ผ๋จ.
๋ณต์ฌํ์ง์๊ณ ์ด๋์ํจ์ด์ : ๋ฒํผ์ด ๋ฐํฌ๋ช ์ด๊ฑฐ๋ ๋ฒํผ์ ์ ๋๋ฉ์ด์ /์ดํํธ๊ฐ ์๋๊ฒฝ์ฐ ๋ณต์ฌํด์ ๊ฒน์น๋ฉด ์ด์ํ๊ธฐ๋๋ฌธ
๊ทธ๋ ๋ค๊ณ ์ด๋์ด ๋ฌด์กฐ๊ฑด ์ข์๊ฑด์๋. ๋ฒํผ์ด ์ด๋ํด์๋๋์ ์๋ณธ ๊ณ์ธต๊ตฌ์กฐ์ ๋ณ๊ฒฝ์ด ์์ผ๋ฉด ๋ง์ด ๊ผฌ์.
์ฅ๋จ์ ์ด ์๋๋ฏ.
๊ฐ์ถ!
์๋ฅํ๋ค ํ๋ ์ผ ์๋ผ๋ผ! - dc App
์ ์ด๋ ๊ฒ๊น์ง... ์ง์ง ๊ณ ๋ง์ต๋๋ค ใ ใ
์ค์ผ ์น์ ํจ
์ธ๋๊ฒ๊ฐ๋ฐ๊ฐค์ ์ด๋ ๊ฒ ์ ์ตํ ์ ๋ณด๊ฐ?
์ฒ์ฌ์ผ?
๊ฐ์ถ
์ ๋ฒํผ์ ์ฎ๊ฒจ์ค๋ฉด ๋๋๊ตฌ๋