Unity Editor 不用反射访问编辑器内部方法
Q:
该问题来自Game Framework 官方群(216332935), Liuyi的提问.
Timeline 里引用了 UnityEditor.TimeArea 是个 internal 的类型
Timeline 所在的代码就能正常访问, 但是自己扩展的编辑器类就无法访问
本文参考了:
https://blog.csdn.net/akof1314/article/details/111773851
在使用 Unity Editor 制作编辑器工具的时候
经常无法对 Editor 内的 internal 类和方法进行访问
需要使用反射方式
反射方式写起来比较麻烦, 如果 Unity 升级了版本, 内部接口变化, 会导致反射失效
A:
参考官方代码
我们可以发现其中有大量
[assembly: InternalsVisibleTo(“Unity.InternalAPIEditorBridge.00x”)]
这部分就是官方提供出来以供我们扩展我们自己的编辑器类
实践
在 Editor 下新建一个文件夹
文件夹内包含如下文件:
TestTimeArea.cs
文件
1 | using UnityEditor; |
TestTimeArea.asmdef
文件
1 | { |
现在就可以看到TestTimeArea.cs
文件能正常编译, 同时也可以正常使用的UnityEditor.TimeArea
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZeaLotSean!