unity里面动态的替换shader
来源:互联网 发布:程序员的数学全套pdf 编辑:程序博客网 时间:2024/06/07 00:02
原地址:http://blog.csdn.net/huutu/article/details/38231061?utm_source=tuicool&utm_medium=referral
在游戏中,怪物或者人受到攻击后,会有变白的效果。这个效果是Shader实现的。在判定被攻击的时候切换Shader。
- Shader shader = getBeAttackShader();
- material.shader = shader;
- static Shader s_BeattackShader = null;
- protected virtual Shader getBeAttackShader()
- {
- if(s_BeattackShader == null)
- {
- s_BeattackShader = Shader.Find("Custom/attack");
- }
- return s_BeattackShader;
- }
代码没有问题,但是在4S等低端设备上,被攻击时会明显卡顿,时间长达1S。
于是用Unity的性能分析器,在被攻击时暂停,可以看到:
在OpenGL中用过Shader的同学们看到下面的函数名字就知道问题所在了
Shader.CreateGPUProgram()
这个函数过程就是创建GLProgram链接Shader的一个过程,在Unity3d中的Shader.Find()是直接创建GLProgram的。
如果是自己去写引擎,GLProgram一般在初始化的时候就会创建完毕,然后用类似GLProgramManager管理。
Unity中的问题我们也可以用这个方法解决,但是Unity提供了简便方法。
点击Editor - Project Setting - Graphics
右侧 Always Included Shaders,把我们需要使用的Shader拖到里面去吧
0 0
- unity里面动态的替换shader
- 动态替换模型的shader
- Unity使用Shader动态的剪切物体
- Unity动态创建带有Shader的Material
- Unity里面为Sprite添加边框写的的shader
- unity在定制的shader里面如何添加阴影
- Unity Shader之动态阴影
- Unity 材质球shader替换简单使用
- unity 动态改变所有子物体的shader
- Unity中动态改变物体的Material(Shader)
- Unity的shader
- 基本的unity shader
- unity shader的组织形式
- Shader 学习二:Unity shader 的组织形式
- Unity Shader学习笔记:简单的shader
- 【Unity Shader】2D动态云彩
- Unity的Shader入门学习
- 关于unity shader的StencilBuffer
- 实现碰撞ViewGroup,任何其中的子view都可以实现碰撞移动
- 最小二乘法在机器学习中的应用
- ArrayList和LinkedList的区别
- Swift设计模式之策略模式
- XCode编译器介绍
- unity里面动态的替换shader
- 目标赋予生命的意义和目的
- Recycleview实现顶部添加headerview
- Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut poin_
- Linux常用命令
- Swift设计模式之备忘录模式
- java实现堆的操作(建堆,插入,删除)
- php laravel学习总结
- 怎样才能不下载使用一些前端类库