- Home /
How to add a component in a runtime instantiation?
Hi want to do this:
void Start () {
for (int i=0;i<totalToCreate;i++)
{
Vector3 pPosition = posicionateAvatar();
GameObject gmO = new GameObject();
gmO.name="StudentFollower";
gmO.transform.position=pPosition;
Follow follow=new Follow();
follow.target=transform;
gmO.AddComponent ("Follow")=follow;
}
}
So, for another words, I want to add the variable 'follow' (type Follow) to a GameObject 'gmO'. I try many ways to do this but it isn't work. Someone can help me pls? At this way I have
error CS0131: The left-hand side of an assignment must be a variable, a property or an indexer
If I do gmO.AddComponent (follow); I have
error CS1502: The best overloaded method match for
UnityEngine.GameObject.AddComponent(string)' has some invalid arguments and - error CS1503: Argument
#1' cannot convertFollowAluno' expression to type
string'
Answer by fafase · Feb 21, 2013 at 09:04 PM
Ok if I get it right, you want to add a Follow component to the newly created game object and pass the follow object you just made up before. Well, you could simply fill up the component you create:
void Start () {
for (int i=0;i< totalToCreate;i++)
{
Vector3 pPosition = posicionateAvatar();
GameObject gmO = new GameObject();
gmO.name="StudentFollower";
gmO.transform.position=pPosition;
Follow follow = gmO.AddComponent ("Follow")as Follow;
follow.target=transform;
}
}
Great! Yes is that what I want. Now I have another question: and if I want to add a Transform?
using UnityEngine;
using System.Collections;
public class EscolhePersonagem : $$anonymous$$onoBehaviour {
public GameObject persons;
private ArrayList list;
void Start () {
GetListAvatars();
Transform tf=this.gameObject.AddComponent(Transform) as Transform;
tf=list[Random.Range(0,list.Count)];
}
void GetListAvatars () {
ArrayList listAvatars = persons.GetComponentsInChildren( Transform);
list = new ArrayList();
foreach ( Transform avatar in listAvatars ) {
if ( avatar != persons.transform ) {
list[ list.Count ] = avatar;
}
}
}
}
I get a several errors with this
You do not need to add a transform to a Unity game object, it already have one by default. Transform is the only component every object has, even an empty one.Avoid ArrayList, they will get you in trouble later on. Since you are storing Transform, make it a Transform array.
Your answer
Follow this Question
Related Questions
Attach C# Script on runtime 1 Answer
Problem with instantiate in runtime 2 Answers
How to instantiate a MonoBehaviour from a downloaded DLL at runtime? 0 Answers
Load a list of scripts from folder 1 Answer
Avoid altering prefab at runtime 1 Answer