Как добавить Script к созданному объекту во время выполнения? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть скрипт в моей основной папке Assets BezierWalk.cs

В другом скрипте, Spawn, я пытаюсь создать экземпляр объекта из Prefab Sphere и прикрепить к нему BezierWalk.cs.

Spawn script:

public class Spawn : MonoBehaviour
{

  public GameObject Sphere;
  //string ScriptName = "BezierWalk";

  void Start()
  {  
      Vector3 vSpawnPos = transform.position;

      for (int i = 0; i < 20; i++)
        {
          var objectYouCreate = Instantiate(Sphere, vSpawnPos, transform.rotation);
          //objectYouCreate.AddComponent<T>("Assets/BezierWalk.cs");
          //objectYouCreate.AddComponent(typeof(ScriptName)) as ScriptName;
          //objectYouCreate.AddComponent<ScriptName>();
          //var myScript = Sphere.AddComponent<BezierWalk.cs>();
          vSpawnPos.z += 20;
        }       
   }

Вы можете видеть закомментированные попытки ...

Как я должен делать это правильно?Спасибо.

1 Ответ

1 голос
/ 02 июля 2019

Если вы посмотрите на то, как вы ссылаетесь на компоненты в единстве, ответ должен быть ясным - пробовали ли вы какие-либо из перечисленных вами?

Ссылка: https://docs.unity3d.com/ScriptReference/GameObject.AddComponent.html

Обычно используется для удобства чтения

objectYouCreate.AddComponent<ClassName>();

Вы можете использовать

objectYouCreate.AddComponent(typeof(ClassName));

.cs для людей, это ваша читаемая версия.поэтому вам никогда не понадобится ссылка .cs в вашем коде.

примечание: я упомянул его как ClassName, а не имя сценария, поскольку, хотя они одинаковы в монобихе поведения в единстве, это не то же самое где-либо еще в c #, поэтому, важным битом является не имя файла, который вы сделали, а имя класса в нем.

Другой способ - создать префабы, сделать префаб из вашего объекта со всеми компонентами, которые вам уже нужны.это.

...