Category: Unity custom editor not saving

idea final, sorry, but all does not..

Unity custom editor not saving

By using our site, you acknowledge that you have read and understand our Cookie PolicyPrivacy Policyand our Terms of Service. The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. It looks like this in my editor:.

My problem is that if I change any property of the Tiles List, meaning if I modify a enum or add a texture to one of the variables the value or texture assigned is removed once I change the scene or if Unity is closed.

[SOLVED] ScriptableObject is NOT getting saved!

This is the very first time that I tried something like this in the editor. It seems to me like the problem was that Unity was not recognizing the changes on the scene so I have forced them using. I found that behaviour after clicking on "Reset Component" then clicking on my button "Add new Tile"the new tile is added successfully then I tried to change the scene and unity asked to save the scene, I clicked on "OK" and when I returned to the scene everything was fine, so I tried adding a new Tile, the new tile is added but when I changed the scene Unity didn't asked to save changes.

How to make an EDITOR WINDOW in Unity

Learn more. Asked 2 years, 9 months ago. Active 2 years, 9 months ago. Viewed 2k times.

Intercept Ctrl + S keyboard shortcut in editor for custom editor

Collections; using System. EnumPopup "Tile Type", myTarget. Add newTile ; myTarget. Invoke "RemoveTile", 0.

Ata chokes

RemoveAt tiles. Count - 1 ; if myTarget. RemoveAt myTarget. Roberto Guajardo. Roberto Guajardo Roberto Guajardo 3 3 silver badges 13 13 bronze badges. It doesn't feel right to me, to have static members in the editor. You should try to get every data from the object you want to manage with the editor. The static values are only used to know if the "Map Properties" or "Tiles List" is folded or unfolded. There is a static list. I meant this member, not the booleans, those seem fine to me.

Oh sorry I forgot to delete that variable, is actually not being used in the script. I have created it when I was testing different ways to display the editor.To speed up application development, create custom editors for components you commonly use. This page shows you how to create a simple script to make GameObjects The fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more.

More info See in Glossary always look at a point. When writing Editor scripts A piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like.

To do this, add the ExecuteInEditMode attribute to the class, like this:. More info See in Glossarythe GameObject updates its rotation so that it looks at the target point in world space. The above demonstrates how you can get simple scripts running during edit-time, however this alone does not allow you to create your own Editor tools.

The next step is to create a Custom Editor for the script you just created. When you create a script in Unity, by default it inherits from MonoBehaviour, and therefore is a component that you can attach to a GameObject. When you place a component on a GameObject, the Inspector displays a default interface that you can use to view and edit every public variable, for example: an integer, a float, or a string.

A custom editor is a separate script which replaces this default layout with any editor controls that you choose. This class must inherit from Editor.

The CustomEditor attribute informs Unity which component it should act as an editor for. The CanEditMultipleObjects attribute tells Unity that you can select multiple objects with this editor and change them all at the same time. Editor defines the target property that you can use to access the GameObject you are inspecting. However now that you have control over how the Inspector displays in an Editor script, you can use any code you like to lay out the Inspector fields, allow the user to adjust the values, and even display graphics or other visual elements.

In fact all of the Inspectors you see within the Unity Editor including the more complex Inspectors such as the terrain The landscape in your scene. More info See in Glossary system and animation import settings, are all made using the same API that you have access to when creating your own custom Editors. Here is a simple example which extends your editor script to display a message that indicates whether the target point is above or below the GameObject:.

This is how the Inspector for the LookAtPoint component looks with the message showing if the target point is above or below the GameObject. You have full access to all the IMGUI commands to draw any type of interface, including rendering The process of drawing graphics to the screen or to a render texture.

By default, the main camera in Unity renders its view to the screen. More info See in Glossary Scenes using a Camera A component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info See in Glossary within Editor windows.

unity custom editor not saving

You can add extra code to the Scene View An interactive view into the world you are creating. You use the Scene View to select and position scenery, characters, cameras, lights, and all other types of Game Object. More info See in Glossary. To help you make your own editing controls, you can use the functions defined in the Handles class.

All functions in there are designed for working in 3D Scene views. BeginGUI and Handles. Version: Language : English. Unity Manual.Should I use EnumPopup or Popup? I had a rather mystifying problem when the value set in my Keycode Popup drop down did not match what showed up as the actual enum value during debugging, so I decided to dig deep to fully understand and clarify the issue. If the enum was set to Zero, intValue and enumValueIndex would be the same: 0.

However, if the value was Eleven, the intValue would be 11 and the enumValueIndex would be 1 as the condensed array would be [Zero, Eleven, Random, Size].

These properties update each other so setting the intValue will automatically update the enumValueIndex and vice versa. EnumPopup to keep things simple. Unity will automatically grab the options.

If you are working with a SerializedProperty things are slightly more complicated. EnumPopup will require a bit of casting, but works well. If you want more flexibility and to avoid having to cast to your enumyou can use a normal Popup with the values SerializedProperty provides. This is important. Enum type returned. Casting first to your selected enum and then to int as shown above is the simplest solution. You could use System. Check out the above to resolve your issue.

Hopefully that settles any confusion on how to set up drop downs for enums in the Unity editor and saves you some time! Your email address will not be published. EnumPopup vs. EnumPopup KeyCode property. Popup property. Published in Code Examples Development Tips.

Unity Unity2D Unity3D. Worked great for me, clear descriptions. Wish I found this earlier. October 18, Reply. Leave a Reply Cancel reply Your email address will not be published.Discussion in ' Scripting ' started by shotgunpandaMar 23, Search Unity. Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale starts soon! Custom inspector not saving changes Discussion in ' Scripting ' started by shotgunpandaMar 23, Joined: Nov 13, Posts: 5.

Hey guys, I have been banging my head against this one for a couple of days and am not making any progress. I prototyping a point and click game where objects in the game have actions associated with them when they are examined. I am trying to use scriptableobjects and custom inspectors for the first time so I apologize if this is a very noobish question. I have created a custom inspector that creates a new instance of a scriptableobject, saves it as an asset then adds this asset to a list of actions.

This all seems to work ok, until I try and play the scene, where the list reverts to being empty. I think I must be misunderstanding how these are supposed to work on a fundamental level, but I don't seem to be able to get this to work correctly.

unity custom editor not saving

Here is my custom inspector, for a Prop: Code CSharp :. Prop t. SerializedObject GetTarget. Update. DrawDefaultInspector. BeginVertical .Search Unity. Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale starts soon! Joined: Jul 11, Posts: Here is a small example: Singleton Code CSharp :.

Collections. Destroy gameObject. Serializable ]. NonSerialized ]. SceneManagement. DrawDefaultInspector.

Cute hourly schedule template

IntField "lol"mapManager. Fixed the problem, for anyone who has it, here is the real solution: Use Code CSharp :. SetDirty castedTarget. MarkSceneDirty castedTarget. Joined: Jan 12, Posts: This is the 10th article I've read that finally does what it says. You rock, good sir. MrLucid72Mar 22, Joined: Jul 25, Posts: 2. I wanted to add to this. This helped me track down my problem however, the only thing of your solutions I needed to do was add the if GUI. However I also had the variables in my class set with default accesors for example Code CSharp :.

Joined: Jan 5, Posts: For future generations I struggled with custom editors for a long time too and did a bunch of hacky garbage just to get things kind of ok.

Anonymoushouseplantfan tumblr

But its not this much work once you know what to focus on. The key is to only manipulate SerializedProperties, don't ever operate on the target's data!

6dpo itchy skin

Here's a simple example Code csharp :. Update .Search Unity. Log in Create a Unity ID. Unity Forum. Forums Quick Links. Asset Store Spring Sale starts soon!

Joined: Dec 2, Posts: I am having some difficulties related to saving and loosing large quantities of my work as a result. When I click the "Save Scene" icon it makes a sound similar to the default Windows 7 speaker sound, suggesting that this function is not available in some way. When I attempt to save the project it seems to work. But this is deceiving.

unity custom editor not saving

If I quit and then return to Unity I loose a large quantity of the work that I had done. I this natural? It is incredibly irritating having to restore everything I have done and I would love if anybody could help.

CreativitaDec 5, Joined: Jun 27, Posts: 5, Welcome to the forums. If you have any "Getting Started" questions, first follow the links in my. If that doesn't work, drop me a line, and I'll try to point you in the correct direction.

Moving this thread into support. Adam-BucknerDec 5, To answer your specific question, are you in "Play Mode" at the time you are trying to save?

You cannot save a scene if you are "playing". The usual symptom is to hear the system's error beep.

Custom Editors

As a matter of fact, when you are "playing", you can move and manipulate game objects BUT this is for testing purposes only.It is bittersweet that I have to update this story to say Unity has added what appears to be decent support for this since I wrote this back in Unity 5. I hope to update this someday with a tutorial on them. For historical purposes, and for people on older versions, I will leave this post up.

For example, you might want to make a tool to help level designers place down randomized doodads such as trees, barrels, and flowers. To do this you will need to store data such as the prefabs it can spawn and brush information such as radius and randomness. This article was most recently updated as of Unity 5. There are roughly two types of data you might want to store when writing custom tools:. Preferences can be subdivided further by whether or not the preference should be remembered between projects.

Preferences that should be shared across all projects I call editor preferencesand preferences that are specific to a project I call project preferences.

A good example of project preferences are for remembering the values that a user previously entered into a window. When they close and reopen that window it can be pre-populated with their last selections. For more examples you can browse through the Unity Editor itself. For each value, you provide EditorPrefs with a key at which to store the value. The type of the value is specified based on the function you call. Here is an example:. EditorPrefs can store floats, ints, bools, and strings.

Protip — you can use a string value as your preference to store any data type you might want, provided you can convert your data to and from a string such as JSON. For project preferences, there are two options: Using EditorPrefs with a project key, or using PlayerPrefs. PlayerPrefs are just like EditorPrefs except they are placed in directories specific to a company and project.

PlayerPrefs are generally meant for runtime in game storage of preferences, such as full screen mode and resolution, but they also work for storing preferences while in the Editor. Therefore, I suggest reusing EditorPrefs with a project-specific key. Similarly, for project preferences stored in EditorPrefs, you can add a project-specific string to the key to make the preferences unique to the project.

I use company name and product name in combination in order to mirror the way Unity stores PlayerPrefs. Shared Data is the most complicated type of data to save, and Unity provides little direction or best practices on how to do it. In order to share data between users we need to decide how to store the data and where to store it.


Comments:

Add your comment