[英]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.