Unity3D共享材质巧妙用法
2015-11-13 18:38
537 查看
转载自:http://www.xuanyusong.com/archives/2530
如果你需要修改模型材质的颜色,或者是修改材质Shader的一些属性, 通常情况是用获取模型的Renderer组件,然后获取它的material属性。
举个简单的例子,修改颜色或者直接更换shader
material.color = Color.red;
material.shader = Resources.Load(“Shader/Alpha-Diffuse”, typeof(Shader)) as Shader;
Render可以使用material或者是sharedMaterial两个属性。
Renderer render;
render.material;
render.sharedMaterial;
这两个属性用法是一样的,但是从效率上来说最好用sharedMaterial,它是共享材质,无论如何操作材质的属性(如更换颜色或者更换shader),内存中只会占用一份。但是如果要是用material的话,每次更换属性的时候Unity就会自动new一份新的material作用于它。它 直到Application.LoadLevel() 或者Resources.UnloadUnusedAssets();的时候才会施放内存。所以material就有可能会造成内存泄漏,那么我们干脆就不要使用它。
但是在代码中如果直接用render.sharedMaterial的话,你会发现在编辑器开发模式下,运行一会儿游戏本地的.material文件凡是修改了的都变化了,如果这些文件都在svn管理中,那么他们都会变成红叹号,表示文件已经被修改。这样太危险了,一不小心上传了怎么办。 为了解决这个问题,可以用一个简单的方法,每次获取material的时候根据平台而定。
这样就不用担心本地文件变化了。
如果你需要修改模型材质的颜色,或者是修改材质Shader的一些属性, 通常情况是用获取模型的Renderer组件,然后获取它的material属性。
举个简单的例子,修改颜色或者直接更换shader
material.color = Color.red;
material.shader = Resources.Load(“Shader/Alpha-Diffuse”, typeof(Shader)) as Shader;
Render可以使用material或者是sharedMaterial两个属性。
Renderer render;
render.material;
render.sharedMaterial;
这两个属性用法是一样的,但是从效率上来说最好用sharedMaterial,它是共享材质,无论如何操作材质的属性(如更换颜色或者更换shader),内存中只会占用一份。但是如果要是用material的话,每次更换属性的时候Unity就会自动new一份新的material作用于它。它 直到Application.LoadLevel() 或者Resources.UnloadUnusedAssets();的时候才会施放内存。所以material就有可能会造成内存泄漏,那么我们干脆就不要使用它。
但是在代码中如果直接用render.sharedMaterial的话,你会发现在编辑器开发模式下,运行一会儿游戏本地的.material文件凡是修改了的都变化了,如果这些文件都在svn管理中,那么他们都会变成红叹号,表示文件已经被修改。这样太危险了,一不小心上传了怎么办。 为了解决这个问题,可以用一个简单的方法,每次获取material的时候根据平台而定。
1 2 3 4 5 6 7 8 | public static Material GetMaterial(Renderer render) { #if UNITY_EDITOR return render.material; #else return render.sharedMaterial; #endif } |
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D动态对象优化代码分享
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- Unity3d获取系统时间
- unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)
- Unity3D游戏引擎实现在Android中打开WebView的实例
- unity3d调用手机或电脑摄像头
- Unity3d发布IOS9应用时出现中文乱码的解决方法
- 分享一个开源的网络游戏服务器架构—HouHai
- Unity3D插件详细评测及教学下载
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关