? Unity项目优化总结_牛聚文档

Unity项目优化总结

Unity项目优化总结
预览:

3、特效优化

目前战斗特效,特别是BOSS的特效,在粒子个数、粒子范围、特效Shader等方面做得比较耗,导致帧率下降很厉害,测试机器在BOSS放特效时从60帧降到了20多帧。单个粒子面数建议50左右,粒子的总面数400左右,尽量少用UV动画和粒子旋转。粒子属于半透,需要做Aphla Blend,如果范围过大会导致像素填充率(Fill Rate)低,每一帧的垂直等待时间长,建议粒子范围不要太大,不要搞全屏特效,一些比较夸张的效果可以通过图像后处理(PostEffect)实现。

粒子特效公用Particles/Addtive Shader 优化建议如下:

Shader "Particles/Additive" {

Properties {

//_TintColor可以优化掉

_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)

_MainTex ("Particle Texture", 2D) = "white" {}

_InvFade ("Soft Particles Factor", Range(0.01,3)) = 1

}

SubShader {

Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="true" "RenderType"="Transparent" }

Pass {

Tags { "QUEUE"="Transparent" "IGNOREPROJECTOR"="true" "RenderType"="Transparent" } ZWrite Off

Cull Off

Fog {Color (0,0,0,0)}

Blend SrcAlpha One

//Alpha Test 没必要,可优化掉

AlphaTest Greater 0.01

ColorMask RGB

Program "vp" {

SubProgram "gles " {

Keywords { "SOFTPARTICLES_OFF" }

"!!GLES

#ifdef VERTEX

attribute vec4 _glesVertex;

attribute vec4 _glesColor;

attribute vec4 _glesMultiTexCoord0;

uniform highp mat4 glstate_matrix_mvp;

//控制UV动画的变量,特效中似乎一般也都没使用到,可以考虑优化掉

uniform highp vec4 _MainTex_ST;

varying lowp vec4 xlv_COLOR;

varying highp vec2 xlv_TEXCOORD0;

void main ()

{

gl_Position = (glstate_matrix_mvp * _glesVertex);

第2页/共7页 <上一页下一页>尾页