Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 hjenkinz · Aug 08, 2017 at 01:56 PM · c#scripting problemarraysnulljagged

Jagged Array returns null anywhere outside function that populates it

I have a script that counts the number of tagged GameObjects in the scene and puts them in an array based on their x and z co-ordinates (there are different amounts for each 'row' giving me a jagged array).

At the end of this function I can check if hexArray is null and it says it isn't. If I check this (in Start()) immediately afterwards, it says it is null and even if I call a function from within PutHexInArray(), it still returns null. So basically anywhere outside of this function, it returns null. I have a feeling it must be a syntax error of some kind, but I can't see it.

I'll cut out the bits of the function that don't relate necessarily:

 public GameObject[][] hexArray;
 private float hexZGap = 10.5f;
 private float hexXGap = 12f;

     void PutHexInArray()
     {
         //put all the hexes in a temporary 1d array...
         GameObject[] tempHexArray = GameObject.FindGameObjectsWithTag("Hex");
         print("this many hexes: " + tempHexArray.Length);
 
         float highestZ = -50000;
         float lowestZ = 50000;
 
         for (int i = 0; i < tempHexArray.Length; i++)
         {
             //...(taken out) I check the highest and lowest Z co-ords for all hexes and use that to
            // work out how many rows...
         }   

         int numOfRows = Mathf.RoundToInt((highestZ - lowestZ) / hexZGap) + 1;
 
         //i now know the order of the rows and what their z will be.
         //now that we know the number of rows, we know how big to make our array. we can then go 
            through and write them in order.
         //first set our array to the correct length.

         GameObject[][] hexArray = new GameObject[numOfRows][];
         print("got length: " + hexArray.Length);
 
         //by starting at the lowestZ, and incrementing by hexZGap, we can put them all in the correct 
            row.
         //before we do that, we need to know how many in that row, which we can do by working out the 
            highest and lowest X values
 
         //go through row by row first and foremost...
         for (int rowNum = 0; rowNum < numOfRows; rowNum++)
         {
             //(taken out) I do the same thing here as earlier
            // I work out the highestX and lowestX to work out how many in the row with the right Z co-ords
         }
             
             //now that we have the highest and lowest for that row, we can work out how many in that 
                row.
             int numInRow = Mathf.RoundToInt((highestX - lowestX) / hexXGap) + 1;
             print("numInRow: " + numInRow);
     
             //now set this row of the array to the correct length
             hexArray[rowNum] = new GameObject[numInRow];
 
             //we can then grab them by using their position.....hopefully!
             //so we know how many in each row and the exact position of each now.
 
             for (int i = 0; i < numInRow; i++)
             {
                 float checkForX = (i * hexXGap) + lowestX;
                 //we know the z in this loop already, and we work out the x as we go!
                 for (int b = 0; b < tempHexArray.Length; b++)
                 {
 
                     GameObject thisHex = tempHexArray[b];
                     if (thisHex.transform.position.z == checkForZ && thisHex.transform.position.x == checkForX)
                     {
                         hexArray[rowNum][i] = thisHex;
                     }
                 }
 
             }
         }

         if (hexArray != null)
         {
             print("it's not null at the end of PutHexInArray()");
             print("in fact it's length is this: " + hexArray.Length);
         }
     }'

The key lines are obviously:

 GameObject[][] hexArray = new GameObject[numOfRows][];
 hexArray[rowNum] = new GameObject[numInRow];
 hexArray[rowNum][i] = thisHex;

Any help would be really appreciated.

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 lulitd · Aug 08, 2017 at 03:05 PM

@hjenkinz Your error is at line 25:

  GameObject[][] hexArray = new GameObject[numOfRows][];

it should be this instead:

hexArray = new GameObject[numOfRows][];

so that you are referring to the hexArray field instead of an instance variable.

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 hjenkinz · Aug 08, 2017 at 03:10 PM 0
Share

Ah you legend, I knew it was a simple syntax error. Thanks muchly!

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

366 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Null error on 2D array only after instantiation 1 Answer

How to add an array to monobehaviour 1 Answer

How do i give Coordinates (x, y) to an Array 1 Answer

How to generate a random int that does not repeat consecutively? 1 Answer

When attempting to serialize and save a jagged array it gives me an error message 1 Answer


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