エディタ内の任意の2つのポイントの間にGUIラインを表示するエディタスクリプトを実装しようとしています。私はVector3点(A、B、C)として3つの空のゲームオブジェクトを持っています。例えば、ボタン#1が押されると、整数 "switchCase"の値は1にセットされ、 A点とB点の間に線が表示されます。ボタン#2を押すと、switchCaseは2に設定され、A点とB点、B点とC点の間に線が表示されます。Unity Editor - スイッチケースを使用して2つのポイント間にGUIラインを表示する
問題は、私がボタンを押すとエディタで何も起こらないということです。私は "switchCase"の値がインスペクタで正しく変化しているのがわかりますが、線は表示されません。
インスペクタで値をそのまま入力すると、正常に機能しますが、ボタンを押したときに値が変更されるのが目的です。手動でインスペクタの値を変更します。
私の質問にはうまくいきたいと思います。どんな助けもありがとう!ここで
は、エディタのスクリプトです:
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
using UnityEditor.AnimatedValues;
using System.Linq;
[CustomEditor(typeof(LineTest))]
public class LineTestInspector : Editor
{
public LineTest myScript;
public void OnSceneGUI()
{
Handles.color = Color.red;
switch (myScript.switchCase)
{
case 1:
GameObject posAobj = GameObject.Find("PointA");
GameObject posBobj = GameObject.Find("PointB");
myScript.posA = posAobj.transform.position;
myScript.posB = posBobj.transform.position;
Handles.DrawLine(myScript.posA, myScript.posB);
break;
case 2:
GameObject posCobj = GameObject.Find("PointC");
myScript.posC = posCobj.transform.position;
Handles.DrawLine(myScript.posA, myScript.posB);
Handles.DrawLine(myScript.posB, myScript.posC);
break;
}
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if (GUILayout.Button("Draw First Line"))
{
myScript.switchCase= 1;
Debug.Log("Switch - 1");
}
if (GUILayout.Button("Draw Second Line"))
{
myScript.switchCase = 2;
Debug.Log("Switch - 2");
}
if (GUILayout.Button("Reset switchCase"))
{
myScript.switchCase = 0;
Debug.Log("Switch - 0");
}
}
}
とMonoスクリプト:
using System.Collections;
using System;
using System.Collections.Generic;
using UnityEngine;
public class LineTest : MonoBehaviour {
public Vector3 posA;
public Vector3 posB;
public Vector3 posC;
public int switchCase;
}
感謝を!これは期待通りに機能しました! –