2016-03-24 62 views
3

對不起我的英語!從FirstPersonController訪問另一個腳本

我稱之爲腳本「MYJoystick.cs」:

public class MYJoystick : MonoBehaviour 
{ 
    public static string myX; 
} 

,我想團結5.訪問「MYX」,從「FirstPersonController.cs」我要在更新寫這個FirstPersonController像這樣:

private void Update() 
{ 
     MYJoystick.myX += 1; 
} 

但它說「名稱MYJoystick」在當前上下文中不存在「。

我該如何解決這個問題?我應該添加使用FirstPersonController?使用什麼?統一中的默認命名空間是什麼?我也嘗試爲我的腳本添加命名空間,但它不起作用!

+0

嗯......你有沒有把'MYJoystick'的類定義包裝在另一個命名空間的內部? – Serlite

+0

也許你需要將字符串更改爲int,並將其設置爲0 – tim

回答

2

我剛剛遇到了這個問題。

http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html

的基本規則是,任何將在一個階段的當前操作後編譯不能被引用。 編譯階段如下:

階段1:文件夾中的運行時腳本稱爲Standard Assets,Pro Standard Assets和Plugins。

階段2:名爲編輯器的文件夾中的編輯器腳本,位於稱爲標準資產,專業標準資產和插件的頂級文件夾內的任何位置。

階段3:所有其他腳本不在名爲Editor的文件夾內。

階段4:所有剩餘的腳本(即在名爲Editor的文件夾內的腳本)。

你FPSController C#腳本是標準的資產文件夾,這是編譯的是在另一個文件夾以前您的其他自定義的C#腳本。

要解決此問題,您可以將「標準資產」重命名爲其他名稱,或將該文件夾放入另一個文件夾或採用FPSController腳本並將其與其他腳本放在一起。 更好的解決方案是複製FPSController標準資產腳本並將其放入您的自定義文件夾,然後修改此腳本。

我試圖改變腳本的編譯順序作爲更好的解決方案,但它似乎沒有工作。這只是運行時間Start()Awake()我認爲在腳本之間。