- Home /
C# Why do I have to use .AddComponent and not "new (ClassName)"?
I have a custom GameObject script that I would like to use, it has been working so far but now that I'm trying to add some text, it is giving me some weird functionality.
I have a class that acts as a controller and it instantiates gameobjects from a list after the list is deserialized (not shown here). I have PlayerObject.cs which I use for custom gameobjects. My problem is that the compiler keeps giving warnings saying I need to use MonoBehaviour and AddComponent rather than what I'm currently doing. Likewise, I'm having some weird behaviours when trying to take it beyond creating a basic animated object (using 2d toolkit).
It's evident I'm doing this wrong, could someone please explain the proper way based on my code below, if possible? When I try to extend from MonoBehaviour with PlayerObject class I get errors. What I would like to know is the proper way to create a new custom gameobject, save it to a list of objects, so that I can later access that list and modify objects within the list. Not sure if I'm even asking this properly.
From Controller.cs:
//instantiate list of game objects after previously being deserialized from datastream and added to listObj.
Vector3 vector = new Vector3(listObj[i].position.x, listObj[i].position.y, listObj[i].position.z);
PlayerObject pObj = new PlayerObject();
pObj.gO = (GameObject)Instantiate(character, vector,Quaternion.identity);
pObj.playerId = listObj[i].pId;
pObj.gO.name = listObj[i].name;
playerObjects.Add(pObj);
From PlayerObject.cs:
public class PlayerObject {
public int pId;
public int health;
public GameObject gO;
public tk2dSpriteAnimator spriteAnimator;
public tk2dSprite sprite;
public tk2dTextMesh textMesh;
public PlayerObject(int id)
{
pId = id;
}
public PlayerObject()
{
}
// irrelevant code removed from post
}
Answer by DaveA · Sep 12, 2013 at 08:30 AM
pObj.GObject
should be
pObj.gO
Thanks, I had get/set in PlayerObject which I removed for this post, it was accessing the get/set. Updated post with this correction so it is not misleading. I guess its kind of pointless having get set when the variable is public. Even with this though, still getting problems
Your answer
Follow this Question
Related Questions
Can I use AddComponent to add (this.script) to an object? 1 Answer
C# GameObjects Instantiate Into Each Other Issue 1 Answer
FPS Object-on-wall Placement 0 Answers
Player instantiates Backwords 0 Answers
AddComponent() causes a "trying to create a MonoBehaviour using the 'new' keyword" warning 2 Answers