我试图通过使用Serializable Fields创建私有变量,然后在其下使用{get {return}}来访问我的元素,从而在Unity中引用我的元素。我是C#和Unity的一个完整的初学者,所以我希望得到一个简单的解释。这些可序列化字段中的每一个都有相同的错误,并且没有出现在我的Unity检查器中。
static void Main(string[] args)
{
var values = new[] { 5, 7, 8, 9, 10, 10, 8, 2, 1 };
var i = 0;
foreach (var (x, y) in Pairwise(values))
{
if (x < y)
{
i++;
if (i == 4)
Console.WriteLine("Hello world!");
}
}
Console.ReadLine();
}
答案 0 :(得分:0)
您需要将结构标记为Serializable
以便在Unity Inspector中显示它,如下所示:
[Serializable]
public struct UIElements
{
// ...
}
至于警告,这是正常现象,因此您可以忽略它。
只需确保在检查器中设置这些相应的值即可。
答案 1 :(得分:0)
您所有的字段似乎都定义为property。如果我错了,请有人纠正我,但是为了在检查器中显示属性,您必须“创建”自己的检查器,因为Unity不能安全地序列化/反序列化属性,因为getter和setter可能会根据封装的代码而产生不同的效果。 / p>
我希望这个post为您提供更多启示。
This也可能有用
答案 2 :(得分:-1)
Unity为MonoBehaviour的字段提供了serialization system,您可以使用它们在编辑器中设置字段链接,以后再通过代码使用它。
在这种情况下,您需要将UIElements
作为继承自MonoBehaviour
的类,将其附加到场景中的某些GameObject上并设置所需的链接-此后,您可以将链接用于场景中的对象。