[英]Unity C# Error: 'Sprite' does not contain a constructor that takes 0 arguments
我一直在为Unity中的游戏开发项目系统。 我对编码仍然很陌生,但是我正在尽力而为。
我的项目系统通过访问需要的数据的接口来工作。 尝试将我的sprite从接口分配给私有变量时,出现错误“'Sprite'不包含带有0个参数的构造函数”。 我到处都在寻找解决方案,但到目前为止,还没有找到对我有用的修复程序。
我创建的用于访问接口的类如下所示:
public class ISType : IISType {
[SerializeField] string _name;
[SerializeField] Sprite _icon;
ISType()
{
_name = "Type";
_icon = new Sprite(); }
public string Name
{
get
{ return _name; }
set
{ _name = value }
}
public Sprite Icon {
get
{ return _icon; }
set
{ _icon = value; }
}
}
如果有人能告诉我发生了什么,我将非常感谢您的帮助! :)
答案出在错误中。 没有构造函数为Sprite接受0个参数。 没有看到代码,我猜您是使用参数创建了一个自定义构造函数,并且没有添加无参数的构造函数。
默认的无参数构造函数如下所示:
Sprite()
{}
请确保做更多的阅读和教程。 这是相当基本的类信息。
看起来Sprite不包含接受零参数的公共构造函数。
未定义构造函数的类将具有无参数构造函数。
public class MyClass { }
MyClass x= new MyClass(); // this is valid
但是,如果定义了其他构造函数,则此无参数的“默认”构造函数将不再是“给定”的。
默认构造函数和无参数构造函数之间的区别?
妮可·卡里诺纽(Nicole Calinoiu)的回答
如果您的类不包含显式实例构造函数,则C#编译器将添加“默认”构造函数。 它是一个公共的,无参数的构造函数。 https://stackoverflow.com/a/10498709/5569485
public class MyClass {
public MyClass(string foo)
{
}
}
MyClass x= new MyClass(); // this is invalid
该类必须手动定义无参数构造函数。
public class MyClass {
// parameterless constructor
public MyClass()
{
}
public MyClass(string foo)
{
}
}
MyClass x= new MyClass(); // this is valid again!
有时没有公开提供构造函数,而类提供了静态方法来实例化对象。
public class MyClass
{
private MyClass()
{
}
public static MyClass Create()
{
return new MyClass();
}
}
私有构造函数是一个特殊的实例构造函数。 它通常用于仅包含静态成员的类中。 如果一个类具有一个或多个私有构造函数而没有公共构造函数,则其他类(嵌套类除外)无法创建该类的实例。
在不了解Sprite
类的情况下,我的猜测是存在一种用于创建Sprite实例的静态方法
就像是
Sprite sprite = Sprite.Create(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.