- 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