如果这个计算比较复杂耗时比如:(1)在场景中中查找对象(2)从文件中读取数据、解析数据(XML或Json)(3)在大字典或List或数组中找目标内容 (4)为一组AI计算路径 (5)复杂的数学轨迹(6)光学追踪等等。如果很多对象需要共享这个结算结果的话,我们可以就只计算一次结果,然后将结果分发给需要它的每个对象。用例脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
* Author:W
* 共享一次计算结果,当多个对象都需要这个共享结果时,且这个计算一般都比较复杂耗时。
*
*/
public class ShareComputeResultTest : MonoBehaviour {
private GameObject target;
// Use this for initialization
void Start() {
InitTargetObj();
}
/// <summary>
/// 检查是否获取了target游戏对象,如果没有,则进行获取计算
/// </summary>
private void InitTargetObj()
{
//[注意]GameObject.Find是比较耗时的
if (target == null)
target = GameObject.Find("Target");
}
public void Test1(bool isShow)
{
InitTargetObj();
if (target != null)
target.SetActive(isShow);
}
public void Test2()
{
InitTargetObj();
if (target != null)
target.transform.SetAsLastSibling();
}
// Update is called once per frame
void Update () {
}
}