2016-10-19 2 views
1

Я пытаюсь написать небольшой мод для программы Kerbal Space Program, в которой используется Unity. У меня есть класс, который является ребенком MonoBehaviour, который загружается правильно и все. Часть этого мода включает создание нового источника света в текущей сцене. Мой вопрос заключается в следующем: возможно ли создать новый источник света Unity в текущей сцене, используя сценарий, а не редактор сцены единственного движка (который, я, очевидно, тоже не имею доступа в качестве моддера).Могу ли я создать источник света через скрипт в Unity?

Пример рода вещи я ищу (я знаю, что это не будет выглядеть на самом деле ничего подобного, но просто чтобы дать вам представление о том, что мне нужно)

UnityEngine.getCurrentScene().createObject(new Light(pos, direction, color, strength));

ответ

1

Создайте gameobject и добавить компонент света:

using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    void Start() { 
     GameObject lightGameObject = new GameObject("The Light"); 
     Light lightComp = lightGameObject.AddComponent<Light>(); 
     lightComp.color = Color.blue; 
     lightGameObject.transform.position = new Vector3(0, 5, 0); 
    } 
} 
+0

Хорошо, это также добавит/загрузит GameObject, который вы создали в активную сцену? Или мне нужен дополнительный код для этого? Извините, я мало что знаю о Unity, и я не вижу там никакой функции, которая явно добавляет lightGameObject в сцену, поэтому, если она делает это в фоновом режиме через конструктор или что-то, чего я не знаю. –

+0

Вам нужно будет использовать диспетчер сцен, а затем получить активную сцену, затем запустить этот код и добавить в активную сцену. https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.html –

+0

В основном получение активной сцены и добавление света - это две отдельные части, добавьте код выше, как только у вас будет активная сцена, и она будет работать. –

Смежные вопросы