zoukankan      html  css  js  c++  java
  • 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的游戏对象.,而不是任意获取一个.

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

  • 相关阅读:
    中缀、后缀、前缀表达式
    Salesforce图片上传
    VSCode格式化Apex代码
    Reporting Services已有帐号出现无法登录的问题
    EF-查询缓存
    visual studio 2015将已有项目添加到码云(gitee)
    asp.net页面加载两次的坑
    EF的性能瓶颈
    微信JS-SDK上传多张照片
    Python20-Day02
  • 原文地址:https://www.cnblogs.com/Peng18233754457/p/8966458.html
Copyright © 2011-2022 走看看