예제 #1
0
    void DrawObjectsTable()
    {
        SerializedObject serializedObject = new SerializedObject(AdvancedExample.Instance);

        List <TableColumn> columns = new List <TableColumn>()
        {
            new TableColumn("Name", TableColumn.Width(60f)),
            new TableColumn("Prefab", TableColumn.Width(50f), TableColumn.EnabledCells(false), TableColumn.Optional(true)),
            new TableColumn("Type", TableColumn.Width(50f), TableColumn.Optional(true)),
            new TableColumn("Health", TableColumn.Width(50f)),
            new TableColumn("Speed", TableColumn.Width(50f)),
            new TableColumn("Color", TableColumn.Width(50f), TableColumn.Optional(true)),
            new TableColumn("Can Swim", TableColumn.Width(30f), TableColumn.Optional(true)),
            new TableColumn("Spawners", TableColumn.Width(450f), TableColumn.Optional(true)),
            new TableColumn("Intro (shared by type)", TableColumn.Width(110f), TableColumn.Optional(true)),
            new TableColumn("Instantiation", TableColumn.Width(110f), TableColumn.Optional(true))
        };

        List <List <TableCell> > rows = new List <List <TableCell> >();

        AdvancedExample targetObject = (AdvancedExample)serializedObject.targetObject;

        for (int i = 0; i < targetObject.enemies.Count; i++)
        {
            ExampleEnemyScript enemy = targetObject.enemies[i];
            int sentenceIndex        = targetObject.introSentences.FindIndex(s => s.enemyType == enemy.type);
            rows.Add(new List <TableCell>()
            {
                new LabelCell(enemy.name),
                new PropertyCell(serializedObject, string.Format("enemies.Array.data[{0}]", i)),
                new PropertyCell(new SerializedObject(enemy), "type"),
                new PropertyCell(new SerializedObject(enemy), "health"),
                new PropertyCell(new SerializedObject(enemy), "speed"),
                new PropertyCell(new SerializedObject(enemy), "color"),
                new PropertyCell(new SerializedObject(enemy), "canSwim"),
                new SpawnersCell(new SerializedObject(enemy), "spawnersMask"),
                new PropertyCell(serializedObject, string.Format("introSentences.Array.data[{0}].sentence", sentenceIndex)),
                new ActionCell("Instantiate", () => enemy.Instantiate()),
            });
        }

        tableState = GUITableLayout.DrawTable(tableState, columns, rows);
    }
    void DrawObjectsTable()
    {
        SerializedObject serializedObject = new SerializedObject(AdvancedExample.Instance);
        AdvancedExample  targetObject     = (AdvancedExample)serializedObject.targetObject;

        List <SelectorColumn> columns = new List <SelectorColumn> ();

        columns.Add(new SelectObjectReferenceColumn(TableColumn.Title("Enemy Prefab"), TableColumn.Width(75f), TableColumn.EnabledCells(false), TableColumn.Optional(true)));
        columns.Add(new SelectFromPropertyNameColumn("type", TableColumn.Width(50f), TableColumn.Optional(true)));
        columns.Add(new SelectFromPropertyNameColumn("health", TableColumn.Width(50f)));
        columns.Add(new SelectFromPropertyNameColumn("speed", TableColumn.Width(50f)));
        columns.Add(new SelectFromPropertyNameColumn("color", TableColumn.Width(50f), TableColumn.Optional(true)));
        columns.Add(new SelectFromPropertyNameColumn("canSwim", TableColumn.Title("Swim"), TableColumn.Width(35f), TableColumn.Optional(true)));
        columns.Add(new SelectFromFunctionColumn(
                        sp => new SpawnersCell(new SerializedObject(sp.objectReferenceValue), "spawnersMask"),
                        TableColumn.Title("Spawners"),
                        TableColumn.Width(80f),
                        TableColumn.Optional(true)));
        columns.Add(new SelectFromFunctionColumn(
                        sp =>
        {
            Enemy enemy       = (Enemy)sp.objectReferenceValue;
            int sentenceIndex = targetObject.introSentences.FindIndex(s => s.enemyType == enemy.type);
            return(new PropertyCell(serializedObject, string.Format("introSentences.Array.data[{0}].sentence", sentenceIndex)));
        },
                        TableColumn.Title("Intro (shared by type)"),
                        TableColumn.Width(150f),
                        TableColumn.Optional(true)));
        columns.Add(new SelectFromFunctionColumn(
                        sp =>
        {
            Enemy enemy = (Enemy)sp.objectReferenceValue;
            return(new ActionCell("Instantiate", () => enemy.Instantiate()));
        },
                        TableColumn.Title("Instantiation"),
                        TableColumn.Width(110f),
                        TableColumn.Optional(true)));

        tableState = GUITableLayout.DrawTable(tableState, serializedObject.FindProperty("enemies"), columns);
    }
    void DrawObjectsTable()
    {
        SerializedObject serializedObject = new SerializedObject(AdvancedExample.Instance);

        List <TableColumn> columns = new List <TableColumn>()
        {
            new TableColumn("Name", 60f),
            new TableColumn("Prefab", 50f)
            {
                enabledEntries = false, optional = true
            },
            new TableColumn("Type", 50f)
            {
                optional = true
            },
            new TableColumn("Health", 50f),
            new TableColumn("Speed", 50f),
            new TableColumn("Color", 50f)
            {
                optional = true
            },
            new TableColumn("Can Swim", 30f)
            {
                optional = true
            },
            new TableColumn("Spawners", 450f)
            {
                optional = true
            },
            new TableColumn("Intro (shared by type)", 110f)
            {
                optional = true
            },
            new TableColumn("Instantiation", 110f)
            {
                optional = true
            }
        };

        List <List <TableEntry> > rows = new List <List <TableEntry> >();

        AdvancedExample targetObject = (AdvancedExample)serializedObject.targetObject;

        for (int i = 0; i < targetObject.enemies.Count; i++)
        {
            Enemy enemy         = targetObject.enemies[i];
            int   sentenceIndex = targetObject.introSentences.FindIndex(s => s.enemyType == enemy.type);
            rows.Add(new List <TableEntry>()
            {
                new LabelEntry(enemy.name),
                new PropertyEntry(serializedObject, string.Format("enemies.Array.data[{0}]", i)),
                new PropertyEntry(new SerializedObject(enemy), "type"),
                new PropertyEntry(new SerializedObject(enemy), "health"),
                new PropertyEntry(new SerializedObject(enemy), "speed"),
                new PropertyEntry(new SerializedObject(enemy), "color"),
                new PropertyEntry(new SerializedObject(enemy), "canSwim"),
                new SpawnersEntry(new SerializedObject(enemy), "spawnersMask"),
                new PropertyEntry(serializedObject, string.Format("introSentences.Array.data[{0}].sentence", sentenceIndex)),
                new ActionEntry("Instantiate", () => enemy.Instantiate()),
            });
        }

        tableState = GUITable.DrawTable(columns, rows, tableState);
    }