• 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 el_kontexo · Jul 31, 2017 at 05:13 AM · arrayarrayscustom-inspectorplaymode

Custom Editor: 2D-Array loses all data when entering play mode. 1D-array doesn't. What's going on?

So here's a weird one: I have this very simple class called script. It has 2 boolArrays. One 2D and another 1D array.

using UnityEngine;

 public class Script : MonoBehaviour {
 
     public bool[,] boolArray2D = new bool[10,10];
 
 
     public bool[] boolArray1D = new bool[10];
 }
 

I also have this Custom Editor Script which is supposed to modify the 2 arrays.

 using UnityEngine;
 using UnityEditor;
 
 
 [CustomEditor(typeof(Script))]
 public class CustomScriptInscpector : Editor {
 
     Script targetScript;
 
     void OnEnable(){
         targetScript = target as Script;
     }
 
     public override void OnInspectorGUI(){
 
         EditorGUILayout.BeginHorizontal ();
         for (int y = 0; y < 10; y++) {
             EditorGUILayout.BeginVertical ();
             for (int x = 0; x < 10; x++) {
                 targetScript.boolArray2D [x,y] = EditorGUILayout.Toggle (targetScript.boolArray2D [x,y]);
             }
             EditorGUILayout.EndVertical ();
         }
         EditorGUILayout.EndHorizontal ();
 
 
         EditorGUILayout.Space ();
 
 
         for (int x = 0; x < 10; x++) {
             targetScript.boolArray1D [x] = EditorGUILayout.Toggle (targetScript.boolArray1D [x]);
         }
 
     }
 }

This is what it looks like: alt text

It's super super basic, but here is the problem: When entering play mode, changes I made to the 2D-array in the custom inspector disappear and changes to the one dimensional stay there. Is this a bug or am I just stupid?

( I shouldn't need to mark anything as Serializable because everything is public and standardt-types. I also tried several approaches, with if(GUI.changed && !Application.isPlaying){ EditorUtility.SetDirty(targetScript); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } but to no avail ): )

Any help is appreciated!

84a1fe5eb8.png (6.4 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
1
Best Answer

Answer by bobisgod234 · Jul 31, 2017 at 07:22 AM

Unfortunetely, Unity does not support serialization of multilevel types (multidimensional arrays, jagged arrays, and nested container types). Data you assign to your multidimensional array will be lost when your game assembly is reloaded.

Workarounds are listed on that page.

Comment
Add comment · 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

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.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

80 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

Related Questions

How do I use array's to spawn gameobjects(C#)? 3 Answers

Vector3 Array Empties Its Self Immediately After Being Initialized 1 Answer

Variable Vs Array? 2 Answers

Can't build a Vector3 array 2 Answers

Instantiate from array into array? 2 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