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 Chocolade · Aug 30, 2018 at 07:05 AM · c#scripting problemscript.

How can I return from the method array of Transforms but with or without make instance of the new gameobjects ?

 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 using System.IO;
 using UnityEngine.SceneManagement;
 
 public static class TransformSaver
 {
     [System.Serializable]
     public class TransformInfo
     {
         public string sceneName;
         public string name;
         public Transform parent;
         public Vector3 pos;
         public Quaternion rot;
         public Vector3 scale;
     }
 
     //Save Transform
     public static void SaveTransform(Transform[] tranformToSave)
     {
         TransformInfo[] trnfrm = new TransformInfo[tranformToSave.Length];
         for (int i = 0; i < trnfrm.Length; i++)
         {
             trnfrm[i] = new TransformInfo();
 
             trnfrm[i].sceneName = tranformToSave[i].gameObject.scene.name;
             trnfrm[i].name = tranformToSave[i].name;
             trnfrm[i].parent = tranformToSave[i].parent;
             trnfrm[i].pos = tranformToSave[i].localPosition;
             trnfrm[i].rot = tranformToSave[i].localRotation;
             trnfrm[i].scale = tranformToSave[i].localScale;
         }
 
         string jsonTransform = JsonHelper.ToJson(trnfrm, true);
         File.WriteAllText(@"d:\json\json.txt", jsonTransform);
     }
 
     //Load Transform
     public static Transform[] LoadTransform()
     {
         string jsonTransform = File.ReadAllText(@"d:\json\json.txt");
         if (jsonTransform == null)
         {
             return null;
         }
         
         TransformInfo[] savedTransforms = JsonHelper.FromJson<TransformInfo>(jsonTransform);
         GameObject[] gameObjects = new GameObject[savedTransforms.Length];
         Transform[] loadedTransforms = new Transform[savedTransforms.Length];
 
         for (int i = 0; i < gameObjects.Length; i++)
         {
             SceneManager.SetActiveScene(SceneManager.GetSceneByName(savedTransforms[i].sceneName));
 
             gameObjects[i] = new GameObject();
             loadedTransforms[i] = gameObjects[i].transform;
             loadedTransforms[i].name = savedTransforms[i].name;
             loadedTransforms[i].parent = savedTransforms[i].parent;
             loadedTransforms[i].localPosition = savedTransforms[i].pos;
             loadedTransforms[i].localRotation = savedTransforms[i].rot;
             loadedTransforms[i].localScale = savedTransforms[i].scale;
         }
         return loadedTransforms;
     }
 }

The problem is that the method LoadTransform will return array of Transforms but also will create new GameObjects in the Editor in the Hierarchy.

What I want to do is to add something like a boolean flag or maybe other way so I can select if toe return the array of transforms with or without creating new gameobjects so I tried something like that:

 //Load Transform
     public static Transform[] LoadTransform(bool returnInfo)
     {
         string jsonTransform = File.ReadAllText(@"d:\json\json.txt");
         if (jsonTransform == null)
         {
             return null;
         }
         
         TransformInfo[] savedTransforms = JsonHelper.FromJson<TransformInfo>(jsonTransform);
         GameObject[] gameObjects = new GameObject[savedTransforms.Length];
         Transform[] loadedTransforms = new Transform[savedTransforms.Length];
 
         for (int i = 0; i < gameObjects.Length; i++)
         {
             SceneManager.SetActiveScene(SceneManager.GetSceneByName(savedTransforms[i].sceneName));
 
             if (returnInfo == true)
             {
                 gameObjects[i] = new GameObject();
                 loadedTransforms[i] = gameObjects[i].transform;
             }
             loadedTransforms[i].name = savedTransforms[i].name;
             loadedTransforms[i].parent = savedTransforms[i].parent;
             loadedTransforms[i].localPosition = savedTransforms[i].pos;
             loadedTransforms[i].localRotation = savedTransforms[i].rot;
             loadedTransforms[i].localScale = savedTransforms[i].scale;
         }
         return loadedTransforms;
     }

I added a bool flag returnInfo but now loadedTransforms is null.

But the main goal is to decide if to return array of transforms with or without making instances for new gameobjects.

The problem is when I'm using Editorwindow type script and inside OnGUI to save and load the objects:

  List<GameObject> selections = Selection.objects.OfType<GameObject>().ToList();
          if (selections.Count > 0)
          {
              GUI.enabled = true;
          }
          else
          {
              GUI.enabled = false;
          }
          if (GUILayout.Button("Save selected objects data"))
          {
              if (selections.Count > 0)
              {
                              tempTransformSelection = selections;
                  for (var i = selections.Count - 1; i >= 0; --i)
                  {
                      var selected = selections[i];
                      transformSelection.Add(selected.transform);
                  }
  
                  TransformSaver.SaveTransform(transformSelection.ToArray());
                  transformSelection = new List<Transform>();
              }
          }
  
          var file = @"d:\json\json.txt";
          FileInfo fi = new FileInfo(file);
  
          // By default asume you don't want to show the button
          // it will than only be enabled if the later conditions match
          bool showButton = false;
  
          // you can check this already here not in the loop
          // if no file -> nothing to do
          if (!File.Exists(@"d:\json\json.txt") || fi.Length <= 0) return;
  
  
          // This is only reached if the file exists and is not empty
          // check for null transforms
          for (int i = 0; i < tempTransformSelection.Count(); i++)
          {
              // if not null do nothing
              if (tempTransformSelection[i] != null)
                  continue;
  
              // otherwise enable the button and leave the loop
              showButton = true;
              break;
          }
  
          // if not true then button won't be shown
          if (showButton == true)
          {
              GUI.enabled = true;
          }
          else
          {
              GUI.enabled = false;
          }
          if (GUILayout.Button("Instantiate back deleted selected bojects"))
          {
              TransformSaver.LoadTransform(true);
              showButton = false;
          }
      }
  
      private void OnInspectorUpdate()
      {
          Repaint();
      }

The main goal is to select objects in the hierachy in the editor. Then to click on "Save selected objects data" to save the selected object to a json file.

Then I want to make that only if one of the saved objects to the file is null in the hierarchy fro example if I deleted one or more of the objects in the saved file ! only then enable true the button "Instantiate back deleted selected bojects"

And then when clicking on the button "Instantiate back deleted selected bojects" set the button back to enabled false !

But the important thing is to check for null against the saved list of objects in the json file ! But once again I'm stuck with the tempTransformSelection and with how to enable false/true the button.

Comment
Add comment · Show 3
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 Casiell · Aug 30, 2018 at 07:08 AM 1
Share

You can't have a transform without a gameObject, it just doesn't make any sense whatsoever.

avatar image Chocolade · Aug 30, 2018 at 08:20 AM 0
Share

The main goal is to select objects in the hierachy in the editor. Then to click on "Save selected objects data" to save the selected object to a json file.

Then I want to make that only if one of the saved objects to the file is null in the hierarchy fro example if I deleted one or more of the objects in the saved file ! only then enable true the button "Instantiate back deleted selected bojects"

And then when clicking on the button "Instantiate back deleted selected bojects" set the button back to enabled false !

But the important thing is to check for null against the saved list of objects in the json file ! But once again I'm stuck with the tempTransformSelection and with how to enable false/true the button.

avatar image Harinezumi · Aug 30, 2018 at 08:56 AM 0
Share

Just as Casiell said, you can't have a Transform without a GameObject. Transform does not have a public constructor, so the only way to get a Transform is to get a reference to one in a GameObject (as you do it in your code: gameObject.transform).
What you could do ins$$anonymous$$d is store the individual position, rotation, and scale values, or even the transform matrix.

0 Replies

· Add your reply
  • Sort: 

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

561 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image 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 can i find the current active/enabled true camera and sort list of cameras make the active camera first ? 2 Answers

c# - List with multiple types - Trading Engine - Stock Simulator 2 Answers

How can i create array of texture2d with variables names ? 2 Answers

How can i spawn new gameobjects to be inside the terrain area ? 2 Answers

How can i change vertex posiiton to push it back -1 on z ? 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