【发布时间】:2022-01-27 05:07:05
【问题描述】:
我想为我的脚本制作一个自定义检查器脚本。我需要两个游戏对象和一个滑块。但是,滑块的最大值取决于两个游戏对象之间的距离。我正在使用 EditorGUILayout(编辑器)。直到现在我都尝试用EditorGUI.BeginChangeCheck() 和一个if 语句if (EditorGUI.EndChangeCheck()){...} 来改变它。但是,这并没有真正起作用,滑块也没有出现。我在 OnInspectorGUI() 方法中做所有事情。我是新手,所以我也不知道我还能做什么。
代码如下:
public override void OnInspectorGUI()
{
UILineRenderer renderer = (UILineRenderer) target;
EditorGUI.BeginChangeCheck();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Points");
renderer.startTR = (GameObject) EditorGUILayout.ObjectField(renderer.startTR, typeof(GameObject), true);
renderer.endTR = (GameObject)EditorGUILayout.ObjectField(renderer.endTR, typeof(GameObject), true);
EditorGUILayout.EndHorizontal();
if (EditorGUI.EndChangeCheck())
{
if(renderer.startTR != null && renderer.endTR != null)
{
float val = Mathf.Abs(renderer.startTR.GetComponent<RectTransform>().anchoredPosition.x - renderer.endTR.GetComponent<RectTransform>().anchoredPosition.x);
renderer.radius = EditorGUILayout.Slider("Radius", renderer.radius, 0, val);
}
}
}
有没有办法保存 createt EditorGUILayout 元素并在之后更改它的属性?如果没有,我该如何解决我的问题?提前感谢您的帮助!
【问题讨论】:
标签: c# unity3d editor inspector unity-editor