自定义编辑器窗口 - (Texture2D)EditorGUILayout.ObjectField 选中或放入时不显示或打开图像

Custom editor window - (Texture2D)EditorGUILayout.ObjectField Doesnt display or open an image when selected or dropped in

提问人:Darren 提问时间:11/13/2023 更新时间:11/13/2023 访问量:17

问:

好吧,我记得过去有过这个问题,但我现在想不通。这是我的代码

tex = (Texture2D)EditorGUILayout.ObjectField(“Sand”, tex, typeof(Texture2D), false);

其中 tex 是声明并初始化为 null 的 texture2d。如果我用纹理初始化它,

纹理显示,但我无法选择或放入一个以获得相同的结果。

任何帮助将不胜感激。我在 Bing 中问了 AI,无论如何,它总是给我相同的结果,这些结果对我来说都是正确的。它终于放弃了,说我应该问你。不,真的。哈哈:自己在网上搜索是没有用的。

对此我没有答案,我尝试了一切无济于事。我认为代码是正确的。

unity-game-引擎

评论

0赞 Darren 11/13/2023
没关系。想通了。我在 GUI 中声明变量,而不是在函数等外部声明变量。一旦我这样做了,一切都很好。如果其他人有这个问题,只需确保像往常一样在文件顶部声明您的变量即可。固定。
0赞 derHugo 11/13/2023
这个解决方案真的没有意义......也许你应该分享你的上下文代码..否则很难说出它到底发生了什么
0赞 Darren 11/22/2023
对不起,这真的很简单。我在 ONGUI 中声明了我的变量,该变量不断将其重置为 null。只是让它成为一个公共变量,反而解决了这个问题。

答:

0赞 Prajwal Nagpure 11/13/2023 #1

尝试使用Serializedobject.

步骤 1。将对象转换为序列化对象(在初始化时执行并保存引用)

var tex_so = new Serializedobject(PARENT OF tex);

第2步。在编辑器窗口中显示(在每次 GUI 更新时执行)

EditorGUILayout.PropertyField(tex_so.FindProperty("tex"));

第 3 步。应用更改(在每次 GUI 更新时执行)

tex_so.ApplyModifiedProperties();