Unity 琐碎5 : 利用反射设置编辑器参数
2017-06-29 17:52
537 查看
问题
最近处理unity资源打包问题时候经常遇到的一个问题就是平台切换和Bundle编译。一般情况下,平台转换我需要依赖Cache Serbver加快转换速度,但是在Build Bundle的时候我又不想打开Cache Server,因为会非常非常慢(bundle文件超过2000个)。每次都记得这个操作不现实,所以就考虑是否可以在平时打开Cache Server,Build Bundle时关闭。Unity 自身Editor没提供这个方面的API参考钱康来C#反射——掀起Unity Editor面纱一问的思路,只要是编辑器下可以操作的按钮或者界面应该都可以通过反射进行额外的设置(前提手里有源码哈)。CacheServerPreferences类是UnityEditor内部类,主要处理菜单Editor-->Preferences中 Cache Server 界面的数据处理,so,折腾了一会发射就会有下面的代码:
参考代码
private static void SetCacheServer(bool enable, string ipAddr = "10.8.21.74") { //1 获取程序集 Assembly asm = Assembly.GetAssembly(typeof(UnityEditor.AssetImporter)); if (asm == null) { return; } //2 UnityEditor 内部类 Type cacheServerType = asm.GetType("UnityEditor.CacheServerPreferences"); //3 创建实例 object cacheServerPreferencesObj = System.Activator.CreateInstance(cacheServerType); //4 通过反射读取已设置的参数 MethodInfo readPreferencesMethod = cacheServerType.GetMethod("ReadPreferences"); readPreferencesMethod.Invoke(cacheServerPreferencesObj, null); //5 通过反射设置CacheServer 参数 FieldInfo CacheServerMode = cacheServerType.GetField("s_CacheServerMode", BindingFlags.NonPublic | BindingFlags.Static); FieldInfo CacheServerIPAddress = cacheServerType.GetField("s_CacheServerIPAddress", BindingFlags.NonPublic | BindingFlags.Static); CacheServerMode.SetValue(cacheServerPreferencesObj, enable? 1:2); CacheServerIPAddress.SetValue(cacheServerPreferencesObj, ipAddr); //6 通过反射 保存 CacheServer 参数 MethodInfo writePreferencesMethod = cacheServerType.GetMethod("WritePreferences"); writePreferencesMethod.Invoke(cacheServerPreferencesObj, null); }
参考
在命名空间中通过反射,获取所有类型C#反射Assembly 详细说明
Assembly 类
C#反射——掀起Unity Editor面纱
相关文章推荐
- Unity琐碎(1) 编辑器参数修改
- Unity C# 使用反射,利用字符串作为泛型参数调用泛型方法。
- makecab cabwiz 制作PPC中文程序名的安装包;makecab中利用参数设置不压缩,设置带文件夹进行压缩
- c#,利用反射设置属性值
- [转]c#中如何利用反射设置属性值
- C# 利用反射动态创建对象——带参数的构造函数和String类型
- 反射机制中使用JavaBean来模拟Hibernate或Ibatis设置参数
- 利用反射解决QueryString和Session中的参数绑定问题
- Unity学习笔记4 更换编辑器为VS2013及VS的背景图片设置
- VS2010如何设置使得可以是程序利用argv参数来运行
- c# 利用反射设置属性值
- Visual Studio 2013 设置成为 Unity 3D 默认编辑器的方法
- c#中如何利用反射设置属性值
- 利用反射对私有属性/方法进行设置/调用
- 利用反射设置对象的属性(Property)
- 利用反射进行xml文件配置参数管理
- 利用反射传输存储过程参数,在mssql和mysql两种数据库中存在的问题
- 利用反射技术动态执行方法时如何取引用类参数的值
- 利用反射调用带参数的构造函数创建对象
- 利用volley进行http设置请求头、超时及请求参数设置(post)