Unity3D优化之缓存

来源:互联网 发布:javascript alert 编辑:程序博客网 时间:2024/04/30 02:58

Unity3D虽然是强大的游戏工具,但没有优化,也会做得不好,下有个简单的实验可以说明为什么需要优化。
这里的方法之一只是简单地将对象缓存起来,但缓存与否性能还真是天壤之别。

场景里面只下面的基本物件

Main Camera
Directional light

我们要做的事情是设置Directional light属性1000次,下面分别做了3次实验:No Cache,Partial Cache,Full Cache,我们把脚本分别挂在Main Camera上面。

No Cache

using UnityEngine;public class NoCaching : MonoBehaviour{    void Start()    {    }    void Update()    {        for(int i = 0;i<1000;i++)        {            GameObject.Find("Directional light").GetComponent<Light>().intensity = 1;        }    }}

Partial Cache

using UnityEngine;

public class PartialCaching : MonoBehaviour{    private GameObject directionalLight;    void Start()    {        directionalLight = GameObject.Find("Directional light");    }    void Update()    {        for (int i = 0; i < 1000; i++)        {            directionalLight.GetComponent<Light>().intensity = 1;        }    }}

Full Cache

using UnityEngine;public class FullCaching : MonoBehaviour {    private Light directionalLight;    void Start()    {        directionalLight = GameObject.Find("Directional light").GetComponent<Light>();    }    void Update()    {        for (int i = 0; i < 1000; i++)        {            directionalLight.intensity = 1;        }    }}

总结

缓存方式 CPU No Cache 30.5% Partial Cache 1.3% Full Cache 1.0%
0 0
原创粉丝点击