簡體   English   中英

聲明 Color32 數組的最佳方法

[英]Best way to declare an array of Color32

我正在尋找一種在我的腳本中使用預定義 colors 聲明 Color32 數組的方法。 我想在 Start() function 之前定義 colors。 目前我在 Start() function 中添加所有內容,但它會引發錯誤。 我做錯了什么,聲明這一點的最佳方法是什么?

public Color32[] colorListRGBA = new Color32[2];

void Start () {
        colorListRGBA[0] = new Color32 (255, 0, 0, 255);
        colorListRGBA[1] = new Color32 (117, 76, 36, 255);
        colorListRGBA[2] = new Color32 (93, 165, 0, 255);
    }

我也試過這樣做:

public Color32[] colorListRGBA = new Color32[] { new Color32 (255, 0, 0, 255), new Color32 (117, 76, 36, 255), new Color32 (93, 165, 0, 255) };

public Text myText;
int indexOfColor = 2;

void Start()
{
   myText.color = colorListRGBA[indexOfColor];
}

這會引發錯誤IndexOutOfRangeException: Index was outside the bounds of the array.

在第一行中,您聲明了一個包含 2 個位置的數組,但您試圖在該數組中分配 3 個位置。 修復您的代碼:第一行必須是:

public Color32[] colorListRGBA = new Color32[3]

聲明一個公共變量將使 Unity 在編輯器中對其進行序列化。 如果您在編輯器中修改數組,它將覆蓋您在 class 中定義的數組。

如果您希望防止這種情況,使用 C# 自動屬性將阻止 Unity 序列化它,但不會讓您訪問編輯器中的變量。

public Color32[] ColorListRGBA { get; set; } = new Color32[] { new Color32 (255, 0, 0, 255), new Color32 (117, 76, 36, 255), new Color32 (93, 165, 0, 255) };

暫無
暫無

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

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