I have an odd question which i hope some would be kind enough to answer (eventhough it sounds strange)
Question:
Is it possible to write a plugin which totally changes Unity’s GUI into whatever i would like it to look like ?
I could imagine that someone would do this in order make a “specialized” version of Unity - for example; for making an editor for making RTS or FPS games.
I see this a bit like refurbishing a car - ie. the engine is the same, but the bodywork is different.
By GUI, do you mean the application GUI (editor window, etc.), or the in-game GUI (e.g. the ‘GUI’ runtime class)?
If the former, a certain degree of customization is possible via the various editor-related classes. As for changing the overall look of the application though, I’m not sure if that’s possible (at least not without having access to C++ plugins, and it may not even be possible then).
Perhaps you could explain in a little more detail what you’re wanting. Is the intent just to make level editing easier and more intuitive during the development process?
Well, it’s pretty easy to use as is (that’s one of its strong points), but I suppose people will always have things they’d like to see done differently, or that would work better for the particular problem they’re trying to solve.
Can you specify any of the things that you wish were easier? Depending on what they are, there’s a good chance you could implement the desired functionality using editor scripting. (For anything that can’t be achieved via scripting, there’s always the ‘feature request’ system.)
From my own experience Unity does take some time getting used to, but as a friend of mine said: “Unity Technologies has never claimed that Unity was a no-brainer to use”.
No, i’m not able to specify any specific task i would like to be easier to do - i’m not an experienced user and therefore i wouldn’t be able to give any good examples.
Now back to my question:
Let’s say i would like to make a “clone” of for example the Dragon Age Toolset from Bioware - would this be possible to make as a plugin ? - this would transform Unity from a very versatile editor to a more specialized one (it would ofcourse still be Unity, but in different set clothing).
Personally, I found Unity made perfect sense from the get-go; it’s always seemed very intuitive to me. But, I guess it depends on where you’re coming from (if you’ve spent a lot of time using some particular toolset or another, I suppose anything different might seem strange at first).
I’m not familiar with that toolset, so I can’t comment directly. I know a lot can be done with editor scripting, but there are certainly limitations; it’ll still ‘be Unity’, essentially.
With the pro version you can write your own C++ plugins. I haven’t investigated this myself so I don’t know to what extent the editor can be customized in that manner. Maybe someone else will be able to comment on that.
Customizing the editor in Unity to suit your needs is a very reasonable thing to do (the fact that it’s possible is one of Unity’s strengths). Lots of folks have written custom editor code for level design, etc., and it can definitely streamline the process for certain types of games.
If you just want Unity to ‘be like’ some other specific tool though, the most straightforward solution might be just to use that other tool (if possible), or to create a custom application of the same type. (If you still wanted to use Unity as your game framework, you could almost certainly find a way to shuttle data back and forth between the two applications.)
I also hope another able person will throw a comment on this one.
okay, i wasn’t aware that this possibility existed !
My example of the toolset for Dragon Age was just meant to clarify my question - I’ll agree with you that if this was the intention then it would be better to use that toolset in the first place instead of making a “clone” of it.
You can customise the editor using the editor API. In Unity, a plug-in refers to a DLL written in C/C++ and it is not possible to change the GUI with these.
I’m sorry for sounding stupid, but does this means that you, by using the Editor APIs, can change the GUI and how they work into what ever you desire (within reason ofcourse)?
I’m not an expert on Unity’s editor API, but I’ll try to provide a little info, and perhaps others can offer additional info (or corrections, if needed).
The first to thing to realize is that Unity’s editor scripting basically provides access to the ‘GUI within the GUI’, essentially. That is, you won’t be overhauling the entire Unity user experience using the editor interface, but rather refining and/or expanding it.
There are quite a few things you can do via editor scripting:
Create new menu items (with hotkeys), allowing you to automate common or repetitive tasks.
Create custom editing windows, in which you can include any of the GUI controls that Unity offers.
Create custom inspectors for component types that extend or replace the default inspector. This allows you to automate complex processes, enable tweaking of parameters in a more intuitive way, etc.
Use OnSceneGUI() to implement custom behavior for the scene view itself.
This aspect of Unity is not as well documented (currently, at least) as other aspects, so if you want to do any serious editor customization, you may find yourself having to dig a bit for info. The forums are a good resource though, and I believe there’s a Wiki page for contributed editor scripts as well.