在具有爆炸功能的Unity项目中,您经常这样做
private Dictionary<string, System.Action> explosions;
void .. initialize in your class constructor .. ()
{
explosions = new Dictionary<string, System.Action>();
explosions.Add("huge", SomeCall);
explosions.Add("huger", SomeCall);
etc
}
没问题,但是如果您能做到的话,那会让我感到高兴.
private Dictionary<string, System.Action> explosions =
new Dictionary<string, System.Action>()
{
{"huge", SomeCall},
{"huge", SomeCall},
etc
};
那会让我更加快乐…你知道当你睡得更好,享受微笑时享受美食的感觉吗?
当然,这是行不通的,因为:
Assets/scripts/objects/flite groups/ReallyTremendousExplosions.cs(134,26): error CS0236: A field initializer cannot reference the nonstatic field, method, or property `ReallyTremendousExplosions.someCall()’
谁能给我带来和平?
有没有一种方法可以解决以下事实:您必须在初始化时执行此操作?
解决方法:
看来SomeCall是一个非静态方法,这就是为什么您不能在字段初始化程序中使用它的原因.但是,您可以将初始化放入构造函数中:
public class MyClass {
...
// non static method
private void SomeCall() { ... }
private Dictionary<string, System.Action> explosions;
public MyClass() {
explosions = new Dictionary<string, System.Action>() {
{"huge", SomeCall},
{"huger", SomeCall},
};
}
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。