arrays - 如何在Unity3d检查器中显示锯齿状数组?

标签 arrays unity-game-engine jagged-arrays

我想制作一个锯齿状数组来订购一组航路点系统。我的问题是我不知道如何在 Unity 检查器中显示锯齿状数组,以便我可以用我想要的游戏对象(基本上是棋盘游戏的方 block )填充不同的数组。

该游戏是一款棋盘游戏,玩家可以选择不同的路径(例如马里奥派对)。为了做到这一点,我没有考虑制作一个典型的直线路径点系统(从 A 到 B),而是考虑制作多个路径点系统,以便玩家在到达十字路口时可以从一个路径点系统“跳转”到另一个路径点系统。正如我所写,我不知道如何在检查器中显示锯齿状数组以便我可以正常工作。我尝试将 [system.serialized] 放在脚本类上,但它不起作用,数组根本不出现。

public Transform[][] waypointSystems = new Transform[][] 
    {
      new Transform[1],
      new Transform[43],
      new Transform[1],
      new Transform[5],
      new Transform[7]
    };

最佳答案

快速回答:你不能这么简单。多维数组和锯齿状数组未序列化。

一种方法可能是将数组的一个维度包装在另一个类中,例如

[Serializable]
public class TransformArray
{
    public Transform[] Array;

    public TransformArray(Transform[] array)
    {
        Array = array;
    }
}

public TransformArray[] waypointSystems = new TransformArray[]
{
    new TransformArray(new Transform[1]),
    new TransformArray(new Transform[43]),
    new TransformArray(new Transform[1]),
    new TransformArray(new Transform[5]),
    new TransformArray(new Transform[7])
};

或者您可以写 [CustomEditor]但事情变得非常复杂。您可能对this post感兴趣

或者尝试使用 this thread 中的代码片段来实现您自己的检查器作为起点

SerializedProperty data = property.FindPropertyRelative("rows");
for (int x = 0; x < data.arraySize; x++) 
{
   // do stuff for each member in the array
   EditorGUI.PropertyField(newPosition, data.GetArrayElementAtIndex(x), GUIContent.none);
}

关于arrays - 如何在Unity3d检查器中显示锯齿状数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483241/

相关文章:

javascript - 每次单击 div 时更改正文背景颜色

javascript - 我不知道如何修复我的反向数组/字符串

C "Generic"结构构建

azure - 如何让 Microsoft Azure Speech To Text 在程序运行时开始转录? (统一,C#)

node.js - 在 HttpsCallableResult 完成之前等待所有回调返回

c# - 如何在锯齿状数组中查找唯一值

c# - swift 中对内部数组的本地引用

c++ - 对包含整数和字符的字符串数组进行排序

unity-game-engine - 基于积分的游戏升级公式

c - 用 C 编写一个创建锯齿状二维零数组的函数