Как создать сценарий объекта из сцены в редакторе Unity - PullRequest
0 голосов
/ 07 мая 2019

Я сейчас создаю 2D-игру в Unity и сталкиваюсь с проблемами в дизайне уровней. Я хотел бы создать около 100 уровней, каждый с разными префабами на разных позициях.

Чтобы загрузить нужные уровни, я построил архитектуру со скриптовыми объектами. Tilemaps используются для обозначения препятствий. Таким образом, можно иметь около 30 различных позиций для каждого уровня. Мне кажется неправильным заполнять эту информацию по каждому объекту, который может быть написан отдельно.

То, что я сейчас ищу, - это способ создания уровня в редакторе и сохранения данных непосредственно в объекте, который может быть скриптовым. Чтобы в редакторе была кнопка с надписью: «Сохранить текущий макет сцены, например, объект сценариев уровня 3». А также возможность загружать каждый уровень сцены в режиме редактора.

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

Я бы предложил решения Raphael, но в некоторых случаях это может быть сложно, если вы имеете дело с проблемами с префабами.

Другой способ добиться этого - создать собственный редактор для итерации сцены и создать этот ScriptableObject..

Я использую этот код для чего-то похожего

        GameObject __PARENT = GameObject.Find("__PARENT");
        Vector3 centroid = Vector3.zero;
        Transform[] childs = __PARENT.transform.GetComponentsInChildren<Transform>();
        foreach (Transform go in childs)
        {
            Debug.Log(go.name);
            centroid += go.position;
        }
        centroid /= (__PARENT.transform.childCount);
        GameObject centerPivotObject = new GameObject();
        centerPivotObject.name = "CenterPivotObject";            
        centerPivotObject.transform.position = centroid;

        foreach (Transform go in childs)
        {
            go.parent = centerPivotObject.transform;
        }

В моем случае я пытался центрировать центр в родительском объекте, но вы можете использовать эту итерацию для родительской игры, используя это, и создатьиспользуя этот ваш ScriptableObject

https://wiki.unity3d.com/index.php/CreateScriptableObjectAsset

0 голосов
/ 07 мая 2019

Вы создаете свой уровень в префабе и ссылаетесь на этот префаб в своем ScriptableObject.Таким образом, ваш префаб уровня содержит вашу карту тайла и другие префабы.

...