해당 에셋의 일부 소스입니다

https://assetstore.unity.com/packages/tools/level-design/home-designer-2023-realtime-interior-designer-178561

 

Home Designer 2023 - Realtime Interior Designer | 레벨 디자인 | Unity Asset Store

Get the Home Designer 2023 - Realtime Interior Designer package from exoa and speed up your game development process. Find this & other 레벨 디자인 options on the Unity Asset Store.

assetstore.unity.com

유료 에셋이라 코드내용을 가려야 할 것 같다.....

 

// Class InfoPopup 
public static UnityEvent OnClickMove = new UnityEvent();
public static UnityEvent OnClickDelete = new UnityEvent();

override protected void Awake()
        {

            Instance = this;

            thumb = contentGo.GetComponentInChildren<RawImage>();
            text = contentGo.GetComponentInChildren<TMP_Text>();

            trashBtn?.onClick.AddListener(() =>
            {
                OnClickDelete.Invoke();
                Hide();
            });
            rotateBtn?.onClick.AddListener(() =>
            {
                OnClickDelete.Invoke();
                Hide();
            });
            moveBtn?.onClick.AddListener(() =>
            {
                OnClickMove.Invoke();
                Hide();
            });
            variantsBtn?.onClick.AddListener(() =>
            {
                MaterialPopup.Instance.ShowMode(MaterialPopupUI.Mode.Module, CurrentTarget.gameObject);
                Hide();
            });
            base.Awake();
        }

 

UnityEvent는 Unity에서 이벤트를 구현하기 위한 클래스이고,

OnClickMove는 이벤트의 인스턴스로, UI상의 버튼 클릭과 같은 상황에서 호출할 함수들을 등록할 수 있도록 한다

이 코드에서는 클릭 이벤트가 발생할 때 호출될 함수들을 OnClickMove에 등록하고 있다.

 

도대체가 OnclickDelete와 OnClickMove는 뭐가 어떻게 작동되고 있는걸까, 너무 궁금햇다.

 

열심히 Hierarchy에서 뒤적거린 결과 메인으로 작동되는 소스코드에서 해당 이벤트를 정의해주고 있었다

        InfoPopup.OnClickDelete.AddListener(DeleteSelectedObject);
	InfoPopup.OnClickMove.AddListener(OnClickMove);
        
        private void DeleteSelectedObject()
        {
          코드 내용
        }



        /// <summary>
        ///  Clicking the "move" button on the popup
        ///  will recreate a ghost object that is editable
        /// </summary>
        private void OnClickMove()
        {
     		코드 내용
        }

그니까

InfoPopup 에 선언된 이벤트(OnClickDelete)에 AddListner()로 이벤트에 사용될 함수를 등록해주었고,

Awake() 함수에서 프로그램이 실행 되었을 때, UI상의 버튼 클릭 시 발생할 이벤트를 등록해주었다.

 

RayCastHit 의 구조

barycentricCoordinate 삼각형에서의 충돌 지점의 바리켄트릭 좌표입니다. 바리켄트릭 좌표는 삼각형 내의 점을 나타내는 좌표 시스템입니다.
collider 충돌한 오브젝트의 콜라이더입니다.
distance 레이의 시작점에서 충돌 지점까지의 거리입니다
lightmapCoord 충돌 지점에서의 라이트맵 좌표입니다.
normal 충돌 지점에서의 표면의 법선 벡터입니다.
point 충돌한 지점의 월드 좌표입니다.
rigidbody 충돌한 콜라이더가 속한 리지드바디입니다. 콜라이더가 리지드바디에 속해있지 않으면 null입니다.
textureCoord 충돌 지점에서의 텍스처 좌표입니다.
textureCoord2 충돌 지점에서의 보조 텍스처 좌표입니다.
transform 충돌한 콜라이더나 리지드바디의 트랜스폼입니다.
triangleIndex 충돌한 삼각형의 인덱스입니다.

 

 

 

'Unity' 카테고리의 다른 글

[Unity] SerializeField ? 직렬화 ?  (0) 2024.01.22
[Unity C#] Vector3  (0) 2024.01.22
2024-01-10  (0) 2024.01.10
2024-01-04// 옵셔널 체이닝, Rect Transform, Bounds  (0) 2024.01.04
Unity2D) 기본캐릭터 이동조작  (0) 2022.09.05

+ Recent posts