2013-01-03 97 views
4

我使用Unity3D在C#中創建了一個遊戲,我需要調用一個在運行時創建的腳本,因此我知道腳本的名稱,因爲我有一個與它完全相同的對象。在Unity3D中按名稱加載腳本

我在運行時創建腳本,然後將其保存到我的資源文件夾,但隨後我更改場景並需要調用該腳本並將其附加到當前場景中的Empty GameObject,所以我想使用類似的東西:

Script myScript = Resources.Load(myObject.name) as Script; 

但我知道這能不能做到這樣,所以我在尋找一種方法,我可以做我想做的,因爲我需要加載新的腳本中添加一些功能在運行時。

您是否知道我的問題的解決方案?非常感謝!!

回答

7

這實際上比您想象的要容易。您可以使用AddComponent方法將腳本添加到遊戲對象。所以,你的水平已經改變後,你可以得到你的多空博弈對象的保持和做:

var gameObject = ... 

gameObject.AddComponent<Script>(); // where Script is the name of your Script's C# class 

http://docs.unity3d.com/Documentation/ScriptReference/GameObject.AddComponent.html

+0

嗯,我能做到這一點在編輯器中,但是當我生成項目,它拋出一個錯誤。 問題是我在運行時使用FileStream.WriteFile()創建了一個.cs文件,以便在構建項目時該文件不像其自身的類那樣存在。事實上,在Unity編輯器中,我可以做到這一點,但是當我構建項目時,它會拋出錯誤「無法添加組件,因爲類'myClass'不存在!」 – MasterKehos

+0

你在遊戲運行時編寫這個類?你試圖用這個來達到什麼目的?也許有另一種方式來做到這一點。你能否提供一些見解,說明爲什麼你需要在運行時創建這個類? –