Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by MiniForge · Mar 16, 2014 at 06:45 AM · c#arrayobjectarrays

Array empties values on RunTime?

I am trying to create an array from my building objects I have created. My script BuildingManager holds an array of my building objects. The array is public and I have dragged the three cubes shown in the picture into my array(Should they be prefabs not in the instance of the game?)

Problem: When I run the game the array gets cleared to be the values I have specified under my BuildManager script. In the start function of my BuildManager it declares the size as five. I want the values to be the one the developer sets in the Unity Inspector!

Note: I realize some of my functions in BuildMenu do nothing currently. I am trying to just figure out why the array is cleared to empty objects before I implement them! Thanks.

Before running the game

alt text

After running the game

alt text

My scripts are as follows:

Building

 using UnityEngine;
 using System.Collections;
 
 public class Building : MonoBehaviour {
 
     public int curHealth=100;
     public int maxHealth=100;
     public int regenRate=2;
     public bool isAlive=true;
     
     public void destroy()
     {
         isAlive=false;
         this.destroy();
     }
 
     public void create()
     {
         isAlive=true;
     }
 
     public bool getAlive()
     {
         return isAlive;
     }
 
     public void hpUpdate()
     {
         if (curHealth<=0)
         {
             isAlive=false;
             destroy ();
         }
         else{
 
             if(curHealth<(maxHealth-regenRate))
             {
             curHealth+=2;
             }
 
         }
     }
 
 
     void FixedUpdate()
     {
         hpUpdate();
     }
 }
 

BuildingManager

 using UnityEngine;
 using System.Collections;
 
 public class BuildingManager : MonoBehaviour {
 
     public GameObject[] buildings;
 
     void Start(){
 
         buildings=new GameObject[5];
 
     }
 }
 

BuildMenu

 using UnityEngine;
 using System.Collections;
 
 public class BuildMenu : MonoBehaviour {
 
     public GameObject manager;
 
     BuildingManager buildingmanager; 
     GameObject[] buildingsArray;
 
     // Use this for initialization
     void Start () 
     {
         //gets the component of the build manager and assigns it to the type BuildManager var
         buildingmanager=manager.GetComponent<BuildingManager>();
 
         //set the array of gameobjects to the BuildingManager instance?????
         buildingsArray=buildingmanager.buildings;
     }
 
     void OnGUI () 
     {
         //if we get the input draw the window
         if(Input.GetButtonDown("Build"))
         {
             //draw the window
             drawMenu();
         }
         //then de render if f is hit again
     }
 
     void drawMenu()
     {
         GUI.Box(new Rect(30,30,Screen.width/2,Screen.height/2), "Header box");
 
         for (int i=0;i<buildingsArray.Length;i++)
         {
         
             Debug.Log(buildingsArray[i]);
         }
 
         //if a button is selected we want to start calling the raycast 
         //and destroy the window
         //position from the mouse and rendering 
         //something to show the position on the users screen
 
 
     }
 }
 


capture1.jpg (30.4 kB)
capture.jpg (183.1 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by jbecana · Mar 16, 2014 at 08:01 AM

When you run Start() your are creating a new array thus removing the content setup through inspector. Remove that line and just use the array.

 void Start(){
  
        buildings=new GameObject[5]; // <---- Remove this line
  
     }
 
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image MiniForge · Mar 16, 2014 at 06:23 PM 0
Share

Thank you, it works great. Thought I had to initialize the array with a value so that was why I kept the line!

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

21 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Conceptual Question on Creating Arrays at Runtime 1 Answer

Turning Spinners Based on an Integer 0 Answers

[C#] Buttons through an Array. 1 Answer

A problem with intersection detection 1 Answer

Check times a value is next to the same value in an array 4 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges