Unity安卓游戏开发优化

本文介绍了Unity安卓游戏开发中的优化技巧,包括操作适配、界面阴影问题解决以及代码、模型、Quality设置等方面的优化策略,旨在提升游戏在低端设备上的运行性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单写写,做个备忘,以后还要经常改改。


1. 操作


        PC上控制角色操作可以用Standard Assets --> Character -->  First Person Character --> Prefabs --> FPSController ,FPSController下面挂载角色。若要改到安卓上,需要用到Standard Assets --> CrossPlatformInput --> Prefabs中的几个预设的控制界面,然后在Hierarchy中加入一个空的UI --> Event System即可。另外,可能这个版本的Standard Asset又问题(当前用的是5.0),如果CrossPlatformInput中的控制有问题,需要修改该控制界面中的脚本,把OnEnable函数名改为Start。

        CrossPlatformInput中的操作方式如果不能满足要求,可以用EasyTouch插件自己制作操作界面,EasyTouch中自带预设好的,使用方法可以参考http://www.tuicool.com/articles/2Ebiy2j 中介绍的方法。另外如果需要结合Standard Assets中的FPSController,需要修改FPSController的First Person Controlller脚本文件,将RotateVIew中的内容全部注释掉,去掉FPSController绑定鼠标旋转视角的约束,然后再结合EasyTouch使用。


2. 界面阴影


        在PC上运行正常后,可能会出现在安卓机上运行没有阴影的情况,此时可以按照下面的方法解决。

Android平台下不显示阴影,
1.把Edit-GraphicsEmulation-NoEmulation勾上,
2.出apk包时最好能把playersetting-GraphicsLevel改为force OpenGL ES 3.0 ,不改部分手机也能有阴影
3.qualitysetting-shadowdistance要合适
4.camera离阴影的物理距离不能太远
5.fast、fastest下没有阴影
6.光源要hardshadow或者softshadow,有些硬件不支持softshadow
7.投射物体材质球要cast shadow,接收物体要receiveshadow勾上

原帖地址:http://www.ceeger.com/forum/read.php?tid=18682

        其中第5条中的fast和fastest是指Edit --> Project Settings --> Quality中的默认画质类别

        其中各类详细解释可以参考 https://software.intel.com/zh-cn/articles/how-to-plan-optimizations-with-unity/?utm_source=优快云.com&utm_medium=Text%20Link&utm_campaign=GameDev_PRC_Q215_优快云

        点击Levels中的名称可以在下面查看和修改该画质级别下的各类设定,一般将Default设为Simple就可以产生阴影。然而一旦开启阴影,可能带来的问题是游戏在低端安卓上运行帧数过低(30帧是底线了),然后会带来下面一个问题:优化。


3. 优化


        网上关于Unity工程优化的帖子很多,优化方法也比较多,但总的原则不变,从优先级从高到低可总结为:

(1)代码优化:尽量减少Instantiate等图形加载新建等调用,非常消耗运算和内存。此外还有一些代码优化常识,比如循环优化等等。

(2)模型优化:减少场景中次要模型的顶点数,贴图大小,资源打包,模型动画优化等,如果没有必要不要开启接收阴影(Receive Shadows)和产生阴影(Cast Shadows)等。本次开发模型部分优化主要有一下两个部分:一是把不必要的模型去掉了产生阴影或接受阴影。二是修改模型的Shader,有些Shader比如带透明效果等比较耗费运算和内存,可以试试改成别的。

 

(3)Quality调节:根据各项参数的作用调节。本次开发把Rendering和Other调节的较高(这两项不怎么影响帧数),把Shadows中的内容改成了如下样子:

效果还不错,因为本次开发影响帧数的主要是阴影,在修改了所有模型的阴影参数和Quality的Shadows后,帧数可以达到50左右。

(4)其他优化:不足的可以在查查其他帖子。。。



        大概就总结到这里,以后再添加 :D



附录


        附上显示帧数的代码,直接挂在场景中的一个空Object上:

using UnityEngine;
using System.Collections;

public class FPS : MonoBehaviour {
    private float lastTime;
    private float timeInterval;
    private float fps;
    private int frames;

    // Use this for initialization
    void Start () {
        lastTime = Time.realtimeSinceStartup;
        timeInterval = 0.5f;
        frames = 0;
    }
	
    // Update is called once per frame
    void Update () {
        ++frames;
        float nowTime = Time.realtimeSinceStartup;
        if (nowTime >= lastTime + timeInterval)
        {
            fps = frames / (nowTime - lastTime);
            frames = 0;
            lastTime = nowTime;
        }
    }

    void OnGUI()
    {
        GUILayout.Label("FPS: " + fps.ToString("f2"));
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值