码迷,mamicode.com
首页 > 编程语言 > 详细

Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象

时间:2018-04-28 11:51:12      阅读:687      评论:0      收藏:0      [点我收藏+]

标签:camera   获取   collect   start   unit   场景   initial   test   generic   

FindObjectOfType<>()   是按类型查找游戏对象.<>里面填写类型,那要是有多个这种类型的呢?来试一下.

1.

新建一个场景,新建一个Test.cs脚本,内容随便,再新建一个Test02.cs脚本,内容如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test02 : MonoBehaviour {

    public Test test;
   
    // Use this for initialization
    void Start () {
        test = GameObject.FindObjectOfType<Test>();
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

2.

在场景中新建4个Cube,顺序打乱.

3.

把4个Cube弄成下图那样:

技术分享图片

4.

把Test02挂到相机上,把Test挂到Cube01上运行,Main Camera 的inspector面板的Test02中Test显示的是Cube01;

再在Cube04上挂一个Test运行试一下,再在Cube03上挂一个Test运行试一下,再在Cube02上挂一个Test运行试一下,

此时共挂了4个,挂的顺序是01-04-03-02,可以看出来总是最后挂的那个被Test02脚本的FindObjectOfType找到.

5.

把Cube02取消激活再运行试一下,再把03取消激活试一下,再把04取消激活试一下.

可以发现系统好像有一个列表挂上Test的就加到列表里,列表里存着所有Test的激活的游戏对象,FindObjectOfType获得的是列表的最后一个,也就是最后一个挂上Test的游戏对象.,而不是任意获取一个.

系统内部具体怎么样不清楚,但根据测试来看好像是这么回事.

 

Unity GameObject.FindObjectOfType<>(); 按类型查找游戏对象

标签:camera   获取   collect   start   unit   场景   initial   test   generic   

原文地址:https://www.cnblogs.com/Peng18233754457/p/8966458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!