/// <summary>
        /// スンスペクター描画
        /// </summary>
        public override void OnInspectorGUI()
        {
            // とりあえずデフォルト
            //	DrawDefaultInspector() ;

            //--------------------------------------------

            // ターゲットのインスタンス
            GraphicRaycasterWrapper tTarget = target as GraphicRaycasterWrapper;

            EditorGUILayout.Separator();                // 少し区切りスペース

            //-----------------------

            bool tIgnoreReversedGraphics = EditorGUILayout.Toggle("Ignore Reversed Graphics", tTarget.ignoreReversedGraphics);

            if (tIgnoreReversedGraphics != tTarget.ignoreReversedGraphics)
            {
                Undo.RecordObject(tTarget, "UIGraphicRaycaster : Ignore Reversed Graphics Change");                     // アンドウバッファに登録
                tTarget.ignoreReversedGraphics = tIgnoreReversedGraphics;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            GraphicRaycaster.BlockingObjects tBlockingObjects = (GraphicRaycaster.BlockingObjects)EditorGUILayout.EnumPopup("Blocking Objects", tTarget.blockingObjects);
            if (tBlockingObjects != tTarget.blockingObjects)
            {
                Undo.RecordObject(tTarget, "UIGraphicRaycaster : Blocking Objects Change");                     // アンドウバッファに登録
                tTarget.blockingObjects = tBlockingObjects;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            LayerMask tBlockingMask = LayerMaskField("Blocking Mask", tTarget.blockingMask);

            if (tBlockingMask != tTarget.blockingMask)
            {
                Undo.RecordObject(tTarget, "UIGraphicRaycaster : Blocking Mask Change");                        // アンドウバッファに登録
                tTarget.blockingMask = tBlockingMask;
                EditorUtility.SetDirty(tTarget);
                if (Application.isPlaying == false)
                {
                    UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
                }
            }

            //-----------------------

            EditorGUILayout.Separator();                // 少し区切りスペース

            RectTransform tOffScreenImage = EditorGUILayout.ObjectField("Off Screen Image", tTarget.offScreenImage, typeof(RectTransform), true) as RectTransform;

            if (tOffScreenImage != tTarget.offScreenImage)
            {
                Undo.RecordObject(tTarget, "UIGraphicRaycaster : Off Screen Image Change");                     // アンドウバッファに登録
                tTarget.offScreenImage = tOffScreenImage;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }
        }
Ejemplo n.º 2
0
        //-----------------------------------------------------

        /// <summary>
        /// 各派生クラスでの初期化処理を行う(メニューまたは AddView から生成される場合のみ実行れる)
        /// </summary>
        /// <param name="tOption"></param>
        override protected void OnBuild(string tOption = null)
        {
            Canvas tCanvas = _canvas;

            if (tCanvas == null)
            {
                tCanvas = gameObject.AddComponent <Canvas>();
            }
            if (tCanvas == null)
            {
                // 異常
                return;
            }

            tCanvas.renderMode   = RenderMode.ScreenSpaceOverlay;
            tCanvas.pixelPerfect = true;

            tCanvas.sortingOrder = 0;                   // 表示を強制的に更新するために初期化が必要

            ResetRectTransform();

            //------------------------------------------

            CanvasScaler tCanvasScaler = _canvasScaler;

            if (tCanvasScaler == null)
            {
                tCanvasScaler = gameObject.AddComponent <CanvasScaler>();
            }
            if (tCanvasScaler == null)
            {
                // 異常
                return;
            }

            tCanvasScaler.uiScaleMode            = CanvasScaler.ScaleMode.ScaleWithScreenSize;
            tCanvasScaler.referenceResolution    = new Vector2(960, 640);
            tCanvasScaler.screenMatchMode        = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
            tCanvasScaler.matchWidthOrHeight     = 1.0f;
            tCanvasScaler.referencePixelsPerUnit = 100.0f;

            GraphicRaycasterWrapper tGraphicRaycaster = _graphicRaycaster;

            if (tGraphicRaycaster == null)
            {
                tGraphicRaycaster = gameObject.AddComponent <GraphicRaycasterWrapper>();
            }
            if (tGraphicRaycaster == null)
            {
                // 異常
                return;
            }

            tGraphicRaycaster.ignoreReversedGraphics = true;
            tGraphicRaycaster.blockingObjects        = GraphicRaycaster.BlockingObjects.None;
        }