纳金网

标题: 很占资源的findGameObjectWithTag [打印本页]

作者: 烟雨    时间: 2013-6-30 14:50
标题: 很占资源的findGameObjectWithTag
都说这个find的语句很占资源,不知道大家需要用到这类似这个功能的时候是用什么替代的,举个例子
private enemy other;
void Update ()
    {
        GameObject[] enemys = GameObject.FindGameObjectsWithTag("Player");

        foreach (GameObject enemy in enemys)
        {
            other = enemy.GetComponent<enemy>();
            print(other.mov_x);
        }
    }
像这种有多个敌人的除了这种find语句还有什么好的方法?
作者: 毛毛虫    时间: 2013-8-17 11:25
1、如果一开始就可以找打所有Tag=="Player"的object,这个find语句最好放在awake或者start里
2、如果Tag=="Player"的object是在运行后随机产生的,那么实例化这个object时就可以获取它,也就麽有必要再find了
拙见而已
作者: nobodyland    时间: 2013-8-17 11:38
楼上正解,缓存所有需要进行全场景查找的GameObject是提高性能性价比很高的做法。极端点还可以以把查找对象改为Static Getter,这样不管有多少实例也只要做一次查找就行了。




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5