Unity Scripting缺少变量和未分配的局部变量c#的定义
本文关键字:分配 局部变量 定义 Scripting 变量 Unity | 更新日期: 2023-09-27 18:26:14
我对统一和游戏脚本还很陌生,刚开始时遇到了问题。
这是我的playstate.cs(我只是粘贴相关的代码行)
using UnityEngine;
using Assets.Code.Interfaces;
using Assets.Code.Scripts;
using System.Collections; // dicionario
using System.Collections.Generic; // dicionario
namespace Assets.Code.States
gametime = (int)Time.timeSinceLevelLoad / 5;
GUI.Box (new Rect (Screen.width - 650, 10, 100, 25), gametime.ToString() ); // GAME TIME HOURS
float test;
if (LoadDiagram.diagramaCarga.TryGetValue(gametime, out test)) // Returns true.
{
GUI.Box (new Rect (Screen.width - 650, 275, 50, 25), test.ToString ());
}
这就是我的LoadDiagram的存储位置:
using UnityEngine;
using Assets.Code.Interfaces;
using System.Collections; // dicionario
using System.Collections.Generic; // dicionario
using System;
namespace Assets.Code.Scripts
{
public class LoadDiagram
{
public LoadDiagram ()
{
Dictionary<int, float> diagramaCarga = new Dictionary<int, float>();
diagramaCarga.Add(0, 4.2F);
diagramaCarga.Add(1, 4F);
diagramaCarga.Add(2, 3.6F);
diagramaCarga.Add(3, 3.4F);
diagramaCarga.Add(4, 3.2F);
diagramaCarga.Add(5, 3F);
}
}
}
所以,我有两个错误:
错误CS0117:Assets.Code.Scripts.LoadDiagram' does not contain a definition for
diagramaCarga'
error Assets/Code/States/PlayState.cs(112,87):error CS0165:使用未分配的本地变量"test"
你知道发生了什么事吗?提前感谢!
好吧,@cuberr的评论是正确的,但他没有把它作为答案。
diagramaCarga
只存在于LoadDiagram()
构造函数方法的局部作用域内(大括号内)。您需要在类作用域内为它创建一个公共属性或字段。
更具体地说,您正试图在另一个类中以静态字段的形式访问它,这意味着您需要LoadDiagram
类看起来像这样:
public class LoadDiagram
{
public static Dictionary<int, float> diagramaCarga = new Dictionary<int, float>();
// this is a "static block" which acts like a constructor for static objects,
// as static classes do not use constructors.
// If I got the syntax correct, I've never actually used one of these.
static LoadDiagram(){ // !!edited this line!!
diagramaCarga.Add(0, 4.2F);
diagramaCarga.Add(1, 4F);
diagramaCarga.Add(2, 3.6F);
diagramaCarga.Add(3, 3.4F);
diagramaCarga.Add(4, 3.2F);
diagramaCarga.Add(5, 3F);
}
}