【问题标题】:access another script from FirstPersonController从 FirstPersonController 访问另一个脚本
【发布时间】:2016-03-24 19:59:46
【问题描述】:

对不起我的英语!

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

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

我想在统一 5 中从“FirstPersonController.cs”访问“myX”。我想在 FirstPersonController 的更新中这样写:

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

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

我该如何解决这个问题?我应该在 FirstPersonController 中添加使用吗?用什么?统一的默认命名空间是什么?我也尝试为我的脚本添加命名空间,但也没有用!

【问题讨论】:

  • 嗯...您是否将 MYJoystick 的类定义封装在另一个命名空间中?
  • 也许你需要把字符串改成int,在清醒状态下设置为0

标签: c# unity3d unity5


【解决方案1】:

我刚遇到这个问题。

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

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

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

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

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

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

您的 FPSController c# 脚本位于标准资产文件夹中,这是在其他文件夹中的其他自定义 c# 脚本之前编译的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多