我来自Java,我正在接受C#脚本编写,我已经有两天这个问题了,现在正在寻找解决方案,我已经尝试将类设置为实例和所有内容。这是一个微型游戏项目,我正和一些朋友一起工作。
无论哪种方式,我都有StatHandler.cs来处理我们所有的状态点...然后我有HealthManager.cs,它应该处理所有与Health相关的东西。
问题是,我不能为我的生活弄清楚如何调用诸如
之类的变量public int stamina, strength, agility, dexterity, wisdom;
来自StatHandler.cs
我知道在Java中它会像
一样简单maxHealth = StatHandler.stamina * 10;
虽然你不能用C#做到这一点,但在创建实例时,代码看起来像这样
maxHealth = StatHandler.instance.stamina * 10;
它为我提供了错误
NullReferenceException: Object reference not set to an instance of an object
我也尝试过继承,通过这样做
public class HealthHandler : StatHandler {
但它在HealthHandler类中将所有值设置为0,它不会读取任何内容。
我真的只需要弄清楚如何从其他C#文件中提取变量,因为这会减慢我的速度。
答案 0 :(得分:3)
它实际上与Java相同。对于非静态变量,您需要一个类实例:
StatHandler sh = new StatHandler();
maxHealth = sh.stamina * 10;
或者您可以在类中将变量声明为静态,如
public static string stamina = 10;
然后访问它
maxHealth = StatHandler.stamina * 10;
答案 1 :(得分:0)
在C#中,如果不初始化它,就不能使用值类型变量。
看起来StatHandler.instance
是static
方法。未经分配,您无法使用int
变量。为它们分配一些值。
例如
public int stamina = 1, strength = 2, agility = 3, dexterity = 4, wisdom = 5;
答案 2 :(得分:0)
NullReferenceException:未将对象引用设置为对象的实例
您需要正确初始化。似乎StatHandler.instance
是静态的而未初始化。
您可以在static
构造函数
class StatHandler
{
static StatHandler()
{
instance = new Instance(); // Replace Instance with type of instance
}
}
答案 3 :(得分:0)
你有两种方法可以去这里。
完整静态类
public static class StatHandler
{
public static Int32 Stamina = 10;
public static Int32 Strength = 5;
}
然后:
maxHealth = StatHandler.Stamina * 10; // get the value and use it
StatHandler.Stamina = 19; // change the value
单身实例
public class StatHandler
{
public static StatHandler Instance;
public Int32 Stamina = 10;
public Int32 Strength = 5;
// this is called only the first time you invoke the class
static StatHandler()
{
m_Instance = new Instance(); // Replace Instance with type of instance
}
}
然后:
maxHealth = StatHandler.Instance.Stamina * 10; // get the value and use it
StatHandler.Instance.Stamina = 19; // change the value
// replace the current instance:
StatHandler.Instance = new StatHandler();
StatHandler.Instance.Stamina = 19; // change the value
我认为第一个总是最好的选择,同样的结果,更少的复杂性。