C# 尝试从其他脚本获取变量时使用未分配的局部变量
我试图从脚本MainCharacterVarsScript中获取一个浮点变量,我将在当前脚本中使用此浮点。变量名为CharacterSpeed,两个脚本都位于游戏对象BaseCharacter上。现在我有一种逆向的方法,试图在这个脚本上把它重新生成一个新的变量。这就是我目前拥有的,只是我试图从另一个脚本获取组件。我在第15行(长的一行)上得到一个错误,告诉我我使用了一个未分配的局部变量 我想要的浓缩版: 从一个脚本到另一个脚本获取变量 1) 从MainCharacterVarsScript获取浮点字符速度 2) 在当前脚本中使其成为可用的浮点 3) 都是基于游戏对象的角色 谢谢你的阅读和帮助C# 尝试从其他脚本获取变量时使用未分配的局部变量,c#,variables,unity3d,var,C#,Variables,Unity3d,Var,我试图从脚本MainCharacterVarsScript中获取一个浮点变量,我将在当前脚本中使用此浮点。变量名为CharacterSpeed,两个脚本都位于游戏对象BaseCharacter上。现在我有一种逆向的方法,试图在这个脚本上把它重新生成一个新的变量。这就是我目前拥有的,只是我试图从另一个脚本获取组件。我在第15行(长的一行)上得到一个错误,告诉我我使用了一个未分配的局部变量 我想要的浓缩版: 从一个脚本到另一个脚本获取变量 1) 从MainCharacterVarsScript获取浮
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()
{
}
}