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的游戲對象.,而不是任意獲取一個.

系統內部具體怎么樣不清楚,但根據測試來看好像是這么回事.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM