/// <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()); } }
//----------------------------------------------------- /// <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; }