Hey Chris,
I'm currently reworking on the UI design for Last Life and I'm very curious about what you have planned for the upcoming AC / Unity GUI integration update. Could you shed some light on how we can expect this to work?
Here's what I'm hoping for:
- I'd like to be able to use the Unity GUI tools to create a wider variety of dialogue boxes with subtitles and response options. In particular, I'd love to be able to create a scrolling dialogue box with subtitles and responses like in this video of Kentucky Route Zero.
- On the canvas component that's at the heart of the new Unity GUI system, there's the option to switch render modes from "Screen Space - Overlay" to "Screen Space - Camera" to "World Space." Will we be able to render our UI in World Space?
Thanks!
Comments
As a quick parallel: When using Legacy for animation, AC does all the "background work" to make sure the correct animations play at the correct time - you supply the clips, and AC will do pretty much everything else. It's a good option for those who want something up and running quickly. But Mecanim, on the other hand, is good for those who want to have full control over their animation: AC leaves it to the designer to set things up exactly how they want. AC can call the correct Mecanim parameters, but assigning the FSMs, Blend trees etc is up to the designer - it won't try to take control over anything it shouldn't.
I think the same should be for AC's Menu system vs Unity UI. Essentially, you'd have the option (on a per-menu basis) to decide whether a Menu is drawn by AC, or by Unity UI. If you choose Unity UI, all visual controls are removed from the Menu Manager, and it's up to the designer to take care of everything with Unity's UI tools. You then link the two together by assigning an appropriate field (this will likely be a Canvas Group).
When a Unity UI is linked to an AC menu, AC will handle it's display (turning on/off, locking etc), but not it's appearance. However, you'd also be able to link each element to UI objects - e.g. Button -> Button, Label -> Text. If linked, AC would take over e.g. a Text object's label, or handle a Button's click response.
Before all that, though, I've got to work out how best to link AC Menus to UI objects. My first thought was just to reference prefabs, but that would prevent World space and camera-dependent UIs from working, since they need to reference scene objects. So, it'll likely use the same Constant ID system that ActionList prefabs use. This way, you can link AC to both prefabbed UIs and scene-based ones.
So to cover your points:
All this is subject to change until it's actually released, but that's my current thinking. How much of this is implemented in 1.41 is also up in the air - though certainly control over basic menus and common element types should be in there, but more complex types like like SaveLists may not be initially supported.
All being well, it'll have full support - with the ability to link each of AC's elements to Unity UI equivalents. Progress is going well - integrating the two together is basically a matter of creating the UI as normal, then dragging the correct GameObject into each AC Menu element slot. The single-slot elements are done (Buttons, Labels, etc), but things get quite a bit more complicated when multi-slot elements (e.g. Inventory) are involved.
Expect 1.41 next week.
Btw, is it possible to adjust the subtitles position with Unity UI when you choose "above speaking character"? (we can do that with AC UI)
I'm annoying I know, but thank you in advance
http://docs.unity3d.com/460/Documentation/Manual/HOWTO-UIFitContentSize.html
(background image fit automatically with text size, we can use padding, max height, etc.)