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

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

  • 相关阅读:
    Linux下查看tomcat版本
    React跳转路由传参3种方法和区别
    pc端布局方案
    vue针对搜索引擎做SEO优化
    vue-cli3配置vue.config.js持续更新
    MySQL连接语法(多表查询)
    MySQL约束和外键约束
    MySQL数据库查询
    MySQL数据库入门
    jQuery用法和bootstrap框架
  • 原文地址:https://www.cnblogs.com/Peng18233754457/p/8966458.html
Copyright © 2011-2022 走看看