Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试从其他脚本获取变量时使用未分配的局部变量_C#_Variables_Unity3d_Var - Fatal编程技术网

C# 尝试从其他脚本获取变量时使用未分配的局部变量

C# 尝试从其他脚本获取变量时使用未分配的局部变量,c#,variables,unity3d,var,C#,Variables,Unity3d,Var,我试图从脚本MainCharacterVarsScript中获取一个浮点变量,我将在当前脚本中使用此浮点。变量名为CharacterSpeed,两个脚本都位于游戏对象BaseCharacter上。现在我有一种逆向的方法,试图在这个脚本上把它重新生成一个新的变量。这就是我目前拥有的,只是我试图从另一个脚本获取组件。我在第15行(长的一行)上得到一个错误,告诉我我使用了一个未分配的局部变量 我想要的浓缩版: 从一个脚本到另一个脚本获取变量 1) 从MainCharacterVarsScript获取浮

我试图从脚本MainCharacterVarsScript中获取一个浮点变量,我将在当前脚本中使用此浮点。变量名为CharacterSpeed,两个脚本都位于游戏对象BaseCharacter上。现在我有一种逆向的方法,试图在这个脚本上把它重新生成一个新的变量。这就是我目前拥有的,只是我试图从另一个脚本获取组件。我在第15行(长的一行)上得到一个错误,告诉我我使用了一个未分配的局部变量

我想要的浓缩版:

从一个脚本到另一个脚本获取变量

1) 从MainCharacterVarsScript获取浮点字符速度

2) 在当前脚本中使其成为可用的浮点

3) 都是基于游戏对象的角色

谢谢你的阅读和帮助

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainCharacterMove : MonoBehaviour {


float MoveSpeed;

// Use this for initialization
void Start () {


    GameObject BaseCharacter = GameObject.Find ("BaseCharacter");
    MainCharacterVarsScript mainCharacterVarsScript = 
mainCharacterVarsScript.GetComponent<MainCharacterVarsScript>();
    mainCharacterVarsScript.CharacterSpeed = MoveSpeed;
}

// Update is called once per frame
void Update () {

}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类MainCharacterMove:MonoBehavior{
浮动速度;
//用于初始化
无效开始(){
GameObject BaseCharacter=GameObject.Find(“BaseCharacter”);
MainCharacterVarsScript MainCharacterVarsScript=
mainCharacterVarsScript.GetComponent();
mainCharacterVarsScript.CharacterSpeed=移动速度;
}
//每帧调用一次更新
无效更新(){
}
}
使用System.Collections;
使用System.Collections.Generic;
使用UnityEngine;
公共类MainCharacterMove:MonoBehavior
{    
浮动速度=0f;
//用于初始化
void Start()
{
GameObject BaseCharacter=GameObject.Find(“BaseCharacter”);
MainCharacterVarsScript MainCharacterVarsScript=MainCharacterVarsScript.GetComponent();
MoveSpeed=mainCharacterVarsScript.CharacterSpeed;
}
//每帧调用一次更新
无效更新()
{
}
}

可能的重复我想我可以通过将.GetComponent之前的mainCharacterVarsScript更改为BaseCharacter来解决这个问题,但是现在我在OO中的另一个脚本中遇到了一个错误,您可以通过调用返回所需数据的方法在对象之间通信数据,这是在“对象”之间通信“消息”的主要方式。你的代码没有清楚地显示你想在其中传输数据的两个类定义。
2)在我的当前脚本中使其成为可用的浮点值
3)都在游戏对象BaseCharacter上
你是什么意思?
3)都在游戏对象BaseCharacter上
那么你为什么调用
GameObject.Find(“BaseCharacter”)
?只需使用
this.GetComponent()
您能解释一下您所做的更改,以及为什么它应该解决问题吗?扰流板:初始化
MoveSpeed
值无法解决此问题,因为此变量无论如何都将使用值
0
初始化。最初的问题是,
mainCharacterVarsScript=mainCharacterVarsScript.GetComponent…
没有多大意义…他想使用“CharacterSpeed”作为“MoveSpeed”。所以,初始化并没有帮助,但Start方法的最后一行将根据我所了解的内容解决OP问题。
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class MainCharacterMove : MonoBehaviour
{    
    float MoveSpeed = 0f;

    // Use this for initialization
    void Start()
    {
        GameObject BaseCharacter = GameObject.Find("BaseCharacter");
        MainCharacterVarsScript mainCharacterVarsScript = mainCharacterVarsScript.GetComponent<MainCharacterVarsScript>();
        MoveSpeed = mainCharacterVarsScript.CharacterSpeed;
    }

    // Update is called once per frame
    void Update()
    {

    }
}