Unity3D Prefabs(預設)與 Instantiate(實例化)


Prefabs在unity3d中用的比較多,怎么理解這個東西呢?我把它當作是一個在代碼未運行就創建好的一個物體,我們可以在代碼里重復引用它,這樣相當於實現了物體的多用(與我們寫代碼的重用很相識喲)。

  首先新創建一個預設 (注意顏色是灰色的)

  然后我新建一個物體

將Cube物體拖到剛才新建的預設上,結果如圖:

預設變成了藍色了,我們把創建的物體刪掉。

然后新建一個C#腳本。寫入下面代碼

 public GameObject obj; //傳入的預設

    // Use this for initialization
    void Start () {
        //參數一:是預設 參數二:實例化預設的坐標  參數三:實例化預設的旋轉角度
        GameObject instance = (GameObject)Instantiate(obj, transform.position, transform.rotation);
        //這里 transform.position,transform.rotation分別代表的是相機和坐標和 旋轉角度
    }
    
    // Update is called once per frame
    void Update () {
       
    }

把該腳本添加到相機上面,上面的腳本需要傳入一個GameObject,其實這個就是我們新建的預設,把它拖入腳本的參數里面就可以了。

 

點擊運行后,就會生成一個Cubeprefab的預設的立方體。

還有一種方式,在代碼里用Resource.Load()來加載實例化預設,前提是預設預提必須放在Assets/Resources的目錄下。當然你也可以在 Assets/Resources/MyPrefabs。

代碼:

    // Use this for initialization
    void Start () {
        //參數一:是預設 參數二:實例化預設的坐標  參數三:實例化預設的旋轉角度
        GameObject instance = (GameObject)Instantiate(Resources.Load("Cubeprefab"), transform.position, transform.rotation);
        //這里 transform.position,transform.rotation分別代表的是相機和坐標和 旋轉角度
    }
    
    // Update is called once per frame
    void Update () {
       
    }

 后面這種方式比較靈活運用。比如我在玩一個游戲的時候,我想退出游戲,服務器或本地的數據文件其實就存入了當前角色的坐標和一些其他信息,當下次登錄游戲的時候,就直接從服務或本地數據文件讀取這些信息並使用預設來實例化物體,然后呈現在我們眼前。


免責聲明!

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



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