簡體   English   中英

Unity C#錯誤:“ Sprite”不包含帶有0個參數的構造函數

[英]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();
    }
}

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/private-constructors

私有構造函數是一個特殊的實例構造函數。 它通常用於僅包含靜態成員的類中。 如果一個類具有一個或多個私有構造函數而沒有公共構造函數,則其他類(嵌套類除外)無法創建該類的實例。

在不了解Sprite類的情況下,我的猜測是存在一種用於創建Sprite實例的靜態方法

就像是

Sprite sprite = Sprite.Create(...);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM