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


    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的游戏对象.,而不是任意获取一个.

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

  • 相关阅读:
    求1977!
    三进制小数
    回文数C语言
    JAVA知识点必看
    servlet HttpServletRequest
    为什么web工程要输入localhost或者是127.0.0.1
    service $sce or ng-bind-html
    jQuery的deferred对象详解
    理解promise
    理解Angular中的$apply()以及$digest()
  • 原文地址:https://www.cnblogs.com/Peng18233754457/p/8966458.html
Copyright © 2020-2023  润新知