【发布时间】:2021-01-28 19:58:48
【问题描述】:
- 我创建了 Test.cs 和 TestEditor.cs(Test 类是一个简单的类。)
- Test.cs 是空的,这里是 TestEditor.cs:
using UnityEngine; using UnityEditor; [CustomEditor(typeof(Test))] public class TestEditor : Editor { Test test; GameObject cube; GameObject sphere; public override void OnInspectorGUI() { base.OnInspectorGUI(); test = (Test)target; if (GUILayout.Button("Create")) { Create(); RayCastTest(); } if (GUILayout.Button("RayCast Test")) { RayCastTest(); } } void Create() { cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = test.transform.position; sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); sphere.transform.position = test.transform.position + Vector3.right * 5f; } void RayCastTest() { Ray ray; RaycastHit hit; ray = new Ray(test.transform.position, Vector3.right); if (Physics.Raycast(ray, out hit, 1000f)) { GameObject target = hit.collider.gameObject; target.transform.localScale *= 2f; } } }
- 如果我在 Unity 中按下“创建”按钮,则会创建对象,但 RayCastTest() 函数不起作用。但是,如果我先按“创建”按钮,然后按“RayCast 测试”按钮,该功能就会起作用。
那么,我怎样才能让 RayCastTest() 函数在第一部分工作?
【问题讨论】:
标签: c# unity3d scripting editor raycasting