c# - Unity EditorWindow - 从窗口切换游戏对象
问题描述
我使用 Unity 已经有一段时间了,但从未尝试过编辑器。今天我决定尝试制作一个 EditorWindow 来帮助我的开发捷径。
我想要的是单击窗口上的按钮来打开和关闭场景中的特定灯光。
在下面添加了代码和窗口的图像。
我不知道如何进行。任何帮助将不胜感激!
public class DevTools : EditorWindow
{
public Object workLight;
[MenuItem("Window/DevTools")]
public static void ShowWindow()
{
GetWindow<DevTools>("Development Tools");
}
private void OnGUI()
{
GUILayout.Label("This is the development tools.", EditorStyles.boldLabel);
workLight = EditorGUILayout.ObjectField(workLight, typeof(object), true);
if (GUILayout.Button("Working Light"))
{
if(workLight == null)
{
ShowNotification(new GUIContent("No light selected"));
}
else
{
}
}
}
}
解决方案
非常感谢查理!
稍微改写一下,这似乎奏效了。不确定它是否完美优化,但它可以顺利工作(atm):p。
public class DevTools : EditorWindow
{
Object workLight = default;
[MenuItem("Window/DevTools")]
public static void ShowWindow()
{
GetWindow<DevTools>("Development Tools");
}
private void OnGUI()
{
GUILayout.Label("This is the development tools.", EditorStyles.boldLabel);
if (GUILayout.Button("Working Light"))
{
if (workLight == null)
{
ShowNotification(new GUIContent("No light selected"));
}
else
{
var light = GameObject.Find("Work Light");
if (light == null)
{
ShowNotification(new GUIContent("Selected object is not a light"));
return;
}
else
{
light.gameObject.GetComponent<Light>().enabled = !light.gameObject.GetComponent<Light>().enabled;
}
}
}
}
}
推荐阅读
- c# - Str1[j] = (portData >> j) & 0x1; 是什么意思?C#中的意思
- apache-spark - Parquet 与 Athena VS Redshift
- docker - Dialogflow 内联编辑器评估在 Docker 上运行的 Tensorflow SavedModel
- python - Tkinter filedialog.askdirectory() 在 Windows 服务器中不起作用
- ios - 表达式类型“@lvalue 字符串?” 当 += 到 UILabel.text 时,没有更多上下文是模棱两可的
- wordpress - 我的 facebook messenger 聊天插件未显示在我的网站上
- python - Django truncatewords 并显示搜索到的单词
- multithreading - 使用 OpenMP 时根据 VTune 的“平均物理核心利用率”较低,不确定大局如何
- javascript - 无法确定任务 ':app:compileDebugJavaWithJavac' 的依赖关系
- c++ - 未解析的外部符号 __guard_fids_table