Exemple #1
0
        // ========================================================================== //

        /* public - [Do~Something] Function             */

        // ========================================================================== //

        /* protected - [Override & Unity API]       */

        private void Awake()
        {
            if (_bExecute_Awake)
            {
                return;
            }
            _bExecute_Awake = true;

            HasUIElementHelper.DoInit_HasUIElement(this);
            OnAwake();
        }
Exemple #2
0
        public static void HasToggle_Test()
        {
            GameObject pObjectTest = new GameObject(nameof(HasToggle_Test));

            GameObject pObjectToggle_A = new GameObject(HasToggle_TestObject.EToggleObjectName.ToggleA.ToString());
            Toggle     pToggleA        = pObjectToggle_A.AddComponent <Toggle>();

            pObjectToggle_A.transform.SetParent(pObjectTest.transform);

            GameObject pObjectToggle_B = new GameObject(HasToggle_TestObject.EToggleObjectName.ToggleB.ToString());
            Toggle     pToggleB        = pObjectToggle_B.AddComponent <Toggle>();

            pObjectToggle_B.transform.SetParent(pObjectTest.transform);



            // 테스트 시작
            HasToggle_TestObject pTestScript = pObjectTest.AddComponent <HasToggle_TestObject>();

            // 처음 디폴트 값은 None입니다.
            Assert.AreEqual(pTestScript.eLastClickToggle, HasToggle_TestObject.EToggleObjectName.None);

            // 스크립트로 수동으로 토글 A 클릭
            pToggleA.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));

            // Helper를 통한 Init을 안했기 때문에 여전히 None
            Assert.AreEqual(pTestScript.eLastClickToggle, HasToggle_TestObject.EToggleObjectName.None);


            // Helper를 통한 Init
            HasUIElementHelper.DoInit_HasUIElement(pTestScript);

            // 테스트 하기 전 Toggle의 isOn상태 저장
            bool bIsOn_Original = pToggleA.isOn;

            // 스크립트로 수동으로 토글 A 클릭 테스트
            pToggleA.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));
            Assert.AreEqual(pTestScript.eLastClickToggle, HasToggle_TestObject.EToggleObjectName.ToggleA);
            Assert.AreEqual(pTestScript.bLastToggle, !bIsOn_Original);

            // 스크립트로 수동으로 토글 A 클릭 테스트
            pToggleA.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));
            Assert.AreEqual(pTestScript.eLastClickToggle, HasToggle_TestObject.EToggleObjectName.ToggleA);
            Assert.AreEqual(pTestScript.bLastToggle, !!bIsOn_Original);


            // 스크립트로 수동으로 토글 B 클릭 테스트
            pToggleB.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));
            Assert.AreEqual(pTestScript.eLastClickToggle, HasToggle_TestObject.EToggleObjectName.ToggleB);
        }
Exemple #3
0
    // ========================================================================== //

    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        if (property.propertyType != SerializedPropertyType.String)
        {
            EditorGUI.PropertyField(position, property, label);
            return;
        }

        _listEnum.Clear();
        _listEnum.Add("Nothing");

        EditorGUI.BeginProperty(position, label, property);

        Object pObjectOwner = property.serializedObject?.targetObject;
        if (pObjectOwner == null)
            return;

        Component pComponent = pObjectOwner as Component;
        if (pComponent == null)
            return;

        MonoBehaviour[] arrMono = pComponent.GetComponents<MonoBehaviour>();
        foreach (var pMono in arrMono)
        {
            Type[] arrInterfaces = pMono.GetType().
                GetInterfaces().
                Where(p => p.IsGenericType).
                ToArray();

            Type pButtonInterface = arrInterfaces.FirstOrDefault(p => p.GetGenericTypeDefinition() == typeof(IHas_UIButton<>));
            if (pButtonInterface == null)
                continue;

            if (HasUIElementHelper.GetInterfaceEnumName(pButtonInterface, out var setEnumName))
                _listEnum.AddRange(setEnumName);
        }


        int iIndex = CalculateIndex(property);

        //Draw the popup box with the current selected index
        iIndex = EditorGUI.Popup(position, label.text, iIndex, _listEnum.ToArray());
        property.stringValue = iIndex >= 1 ? _listEnum[iIndex] : "";

        EditorGUI.EndProperty();
    }
Exemple #4
0
        public static void HasButton_Test()
        {
            // Arrange (데이터 정렬)
            GameObject pObjectTest = new GameObject(nameof(HasButton_Test));

            GameObject pObjectButton_A = new GameObject(HasButton_TestObject.EButtonObjectName.A.ToString());
            Button     pButtonA        = pObjectButton_A.AddComponent <Button>();

            pObjectButton_A.transform.parent = pObjectTest.transform;

            GameObject pObjectButton_B = new GameObject(HasButton_TestObject.EButtonObjectName.B.ToString());
            Button     pButtonB        = pObjectButton_B.AddComponent <Button>();

            pObjectButton_B.transform.parent = pObjectTest.transform;


            HasButton_TestObject pTestScript = pObjectTest.AddComponent <HasButton_TestObject>();

            // 처음 디폴트 값은 None입니다.
            Assert.AreEqual(pTestScript.eLastClickButton, HasButton_TestObject.EButtonObjectName.None);



            // Act (실행)
            // 스크립트로 수동으로 버튼 A 클릭
            pButtonA.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));

            // Helper를 통한 Init을 안했기 때문에 여전히 None
            Assert.AreEqual(pTestScript.eLastClickButton, HasButton_TestObject.EButtonObjectName.None);


            // Helper를 통한 Init
            HasUIElementHelper.DoInit_HasUIElement(pTestScript);

            // 스크립트로 수동으로 버튼 A 클릭 테스트
            pButtonA.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));
            Assert.AreEqual(pTestScript.eLastClickButton, HasButton_TestObject.EButtonObjectName.A);

            // 스크립트로 수동으로 버튼 B 클릭 테스트
            pButtonB.OnPointerClick(new UnityEngine.EventSystems.PointerEventData(null));
            Assert.AreEqual(pTestScript.eLastClickButton, HasButton_TestObject.EButtonObjectName.B);
        }
    // ========================================================================== //

    /* public - [Do~Something] Function             */


    // ========================================================================== //

    /* protected - [Override & Unity API]       */

    private void Awake()
    {
        HasUIElementHelper.DoInit_HasUIElement(this);

        pButton = GetComponentInChildren <ButtonCollider>().pButton;
    }