从FirstPersonController访问另一个脚本

3

对不起我的英文!

我有一个名为“MYJoystick.cs”的脚本:

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

我想在Unity 5的“FirstPersonController.cs”中访问“myX”。我想将其写入FirstPersonController的Update函数中,如下所示:

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

但是它说“当前上下文中不存在名为`MYJoystick'的名称”。

我该如何修复这个问题?我应该在FirstPersonController中添加Using吗?使用什么?Unity中的默认命名空间是什么?我还尝试为我的脚本添加命名空间,但也没有起作用!


嗯...你是否将MYJoystick类的定义包裹在另一个命名空间中了? - Serlite
也许你需要将字符串转换为整数,并在 awake 中将其设置为 0。 - tim
1个回答

2

我刚遇到了这个问题。

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

基本规则是,任何在当前阶段之后编译的内容都不能被引用。 编译的阶段如下:

阶段1:名为Standard Assets、Pro Standard Assets和Plugins的文件夹中的运行时脚本。

阶段2:位于名为Standard Assets、Pro Standard Assets和Plugins的顶层文件夹内任何位置的名为Editor的文件夹中的编辑器脚本。

阶段3:所有不在名为Editor的文件夹中的其他脚本。

阶段4:所有剩余的脚本(即在名为Editor的文件夹中的脚本)。

你的FPSController c#脚本在标准资源文件夹中,这会在另一个文件夹中的自定义c#脚本之前进行编译。

要解决此问题,你可以将“Standard Assets”重命名为其他名称,或将此文件夹放入另一个文件夹中,或将FPSController脚本与其他脚本放在一起。 更好的解决方案是将FPSController标准资产脚本复制并放入自定义文件夹中,然后修改此脚本。

我尝试过更改脚本的编译顺序作为更好的解决方案,但似乎没有起作用。我认为这只适用于运行时使用Start()Awake()之间的脚本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接