Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

SLATE (Complete Gameplay Cutscenes & Cinematics Sequencer)

Discussion in 'Assets and Asset Store' started by nuverian, Feb 29, 2016.

  1. Dennysvital

    Dennysvital

    Joined:
    Sep 5, 2014
    Posts:
    4
    Hello .. Good evening. I have these issues in the asset. It looks perfect to me but I do not know how to resolve those mistakes. I use Unity version 5.6.0f3. Would you help me? upload_2017-7-28_20-5-43.png
     
  2. Dennysvital

    Dennysvital

    Joined:
    Sep 5, 2014
    Posts:
    4
    Hello .. Good evening. I want to start by saying that your asset is fantastic. But I have a serious problem. I can not use it in Unity 5.6.0.f3 You have serious errors in the script "AnimatorTrack." Would you help me?
     
  3. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Thank you :)
    If you even have any suggestions or feature requests, feel free to let me know!

    Hello again,

    Thanks for the screenshots. This is a really strange thing to happen indeed. I see that you are using a handful of other third party assets though, where maybe one of them is responsible for this. to happen (maybe not).
    Do you by any chance, maybe accidentally, have manually attached the "DirectorCamera" component on any gameobject, other than the Director Camera Root which is attached by default?
    Does this problem you are facing occur to you even on a clean scene of the same project, or a completely new clean
    project only with Slate imported?

    Please let me know.
    Thank you!


    Thanks a lot for getting Slate! :)

    Regarding support of the new UI for displaying subtitles and image overlays, it has been postponed due to working on the Dynamic Shot Controller feature instead (which made it to the last two version) for creating procedural camera work, but the new UI will be used in the future for subtitles and overlays in place of OnGUI.

    Having said that, you can already use the 'Animate Properties' clip, to keyframe animation of any supported property type of UI elements like position/rotation/scale, font size etc, if that is what you are after :)
    UIAnimation.gif

    On the other hand, if you want any specific actions for some UI things that can't currently be done, like for example setting the text of a UI Text element, just let me know and I will gladly make them for you and everyone else :)

    Thanks again!

    Hello and thanks. I am glad you like Slate.
    It looks like you are not using the latest version that is currently on the asset store, or at least version 1.7.0 in which support for Unity 5.6+ had been added.
    Please update to the latest version and let me know if you encounter any further issues after the update.

    Thank you.
     
  4. BoboShu

    BoboShu

    Joined:
    Nov 20, 2014
    Posts:
    38
    i send a email to your support mail. slate has memory leak .! i use unity5.2.2f1 , i wiill release my game recently! please help
     
  5. BoboShu

    BoboShu

    Joined:
    Nov 20, 2014
    Posts:
    38
    i found the problem on CutsceneGroup.cs

    Code (CSharp):
    1.         //Initialize actor reference mode
    2.         void InstantiateLocalActor(){
    3.              originalActor = actor;
    4.              actor = (GameObject)Instantiate(actor);
    5.              SceneManager.MoveGameObjectToScene(actor, root.context.scene);
    6.              actor.transform.SetParent(originalActor.transform.parent, false);
    7.            
    8.             #if UNITY_EDITOR //not really needed, but avoids duplicate instaces when user undo immediately after an initialize.
    9.             UnityEditor.Undo.RegisterCreatedObjectUndo(actor, "Reference Instance");
    10.             #endif
    11.  
    12.             if (initialTransformation == ActorInitialTransformation.UseLocal){
    13.                 InitLocalCoords(actor);
    14.             }
    15.  
    16.             actor.SetActive(true);
    17.             //originalActor.SetActive(false);//memoryleak by boboshu on unity5.5.2f1
    18.         }
    19.  
    20.         //Release actor reference mode
    21.         void ReleaseLocalActorInstance(){
    22.              if (actor != originalActor){ //just a failsafe
    23.                  DestroyImmediate(actor);
    24.                  actor = originalActor;
    25.                 //actor.SetActive(true);//memory leak by boboshu on unity5.5.2f1
    26.                 //originalActor.SetActive(true);//memory leak by boboshu on unity5.5.2f1
    27.                  originalActor = null;
    28.              }
    29.         }
     
  6. BoboShu

    BoboShu

    Joined:
    Nov 20, 2014
    Posts:
    38
    shotcamera also has memory leak on editor


    Code (CSharp):
    1.         void Validate(){
    2.             // DirectorGUI.OnGUIUpdate -= OnDirectorGUI; //Memory leak by boboshu
    3.             // DirectorGUI.OnGUIUpdate += OnDirectorGUI; //Memory leak by boboshu
    4.             cam.enabled = false;
    5.             cam.cameraType = CameraType.Preview;
    6.             //to hide default camera gizmos, specificaly the default frustum which is totaly anoying
    7.             cam.hideFlags = HideFlags.HideInHierarchy | HideFlags.NotEditable;
    8.             if (cam.targetTexture != null){
    9.                 cam.targetTexture.Release();
    10.                 DestroyImmediate(cam.targetTexture, true);
    11.             }
    12.         }
     
  7. wanjg

    wanjg

    Joined:
    Apr 5, 2017
    Posts:
    6
    Hey,Can you help me?
    When I used slate make captions,that are not suitable for multiple resolutions. For example, I made subtitles in a resolution of 1334 * 750, and in 1920 * 1080 that captions was too small to look clearly. For the purpose,what should I do in editing the unity canvas?
     
  8. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    @BoboShu
    I have just replied to your email. As I explain in that email, the reason why your sprite object is not unloaded in the test project you've send me, is because it is referenced from the cutscene that lives within the "Resources" folder. All object being in, or referenced from objects in a "Resources" folder, are always pre-loaded, and the fact that they are always loaded is not because of a leak. :)

    Regarding your other two posts above in this forum thread, can you please send me a similar test project showcasing how these lines you've commented out can cause a leak?

    Thank you.

    Hello,
    Until this is properly handled, a quick hotfix workaround would be to please open up DirectorGUI.cs file and change line #17 from being a constant variable to a non constant one, like so:
    Code (CSharp):
    1. public float SUBS_SIZE = 18f;
    Then you will be able to change the font size used for subtitles/captions from the DirectorGUI component inspector attached on the "DirectorCameraRoot" gameobject to your desired size.
    I must admit that not handing subtitles/captions resolution independent, was an oversight and will properly be fixed in the next version! :)

    Thanks for bringing this into my attention.
     
  9. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    An upcoming tutorial "Cinematic Production In Unity" from The Strange School is in the works, featuring Slate (among other tools) and looking super sweet!


    As a side note, official exclusively Slate video tutorials will most than probably be soon in the making, in collaboration with the instructor and artist from The Strange School as well. Stay tuned for more :)
     
    Last edited: Aug 11, 2017
    jdraper3 likes this.
  10. wanjg

    wanjg

    Joined:
    Apr 5, 2017
    Posts:
    6
    o(* ̄︶ ̄*)o Thx~
    Two questions,
    1.How to make the camera shot animations that produced by slate to generate a standard unity animation file?like animator?
    2. How to use the camera shots produced by max to slate?
     
  11. Casanuda

    Casanuda

    Joined:
    Dec 29, 2014
    Posts:
    53
    Hi,

    Is it possible to call mixer snapshots fro Slate?

    Thanks
    Cas
     
  12. Casanuda

    Casanuda

    Joined:
    Dec 29, 2014
    Posts:
    53
    Hi,

    Sorry. One more question.

    You mention in the release notes that you can target the Post Processing Stack. (Specifically DOF).

    I can't find where to do that...

    Thanks
    Cas
     
  13. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hello everyone and sorry for the late replies due to summer vacation!

    Hey,
    Thanks. Please let me address your question :) :
    1) Importing and Exporting from/to native Unity animation files to/from Slate animation clips is a feature in the roadmap and is not currently possible. Can you please let me know the use case that this feature will be useful in your case, just so that I know how to better implement this feature when the time comes? :)

    2) Up until version 2017, Unity was unable to import Camera from an exported FBX file from any DCC like Max, but in Unity 2017+, it is now possible. Thus, if you are using Unity 2017, here is a possible workflow to make those exported cameras available for use in the Slate Camera Track:

    - Export your cameras, preferably within a single FBX file (for this example file named "CameraRig").
    - Add the model in the scene, select all cameras and attach the "Shot Camera" component to them.
    CameraRig.png

    - Having done that, you will be able to select these camera to be used as shots in the Camera Track shot clip, through the "Select Shot" button in the Shot Clip inspector. CameraRig2.png

    - If the cameras also have animation, you can drag and drop the "CameraRig" in the Slate editor, add a Slate Animation Clip in the Animator Track and select the CameraRig animation clip that was exported along and now within the FBX file in unity. In this case the Animation Clip exported is named "Take 001".
    CameraRig3.png

    Let me know if that works for you.
    Thanks!

    Hey,
    I have just created a simple Action Clip for you that will make an AudioMixer transit to a named snapshot. Please find the new clip attached to this post :)
    The "TransitAudioMixerSnapshot", can be added to the "Director Action Group" and can be found under the category named "Control" in the menu.

    Let me know if this works for you.
    Thanks.

    Hey,
    You please have to open up the Slate Editor Preferences (gear icon on the top right of Slate Editor) and enable the last option found there "Use Post Processing Stack Define".
    Once you have that option enabled and considering you of course also have the "Post Proccesing Behaviour" component attached on the "Render Camera" with Depth of Field enabled in the profile assigned as normal, then the "Focal Point" and "Focal Range" parameters on every Slate Camera Shot used, will effectively alter the Depth of Field of the Render Camera :)

    Let me know if that works for you, or if you need any more clarifications.
    Thanks!
     

    Attached Files:

  14. ksam2

    ksam2

    Joined:
    Apr 28, 2012
    Posts:
    1,079
    I need Render Camera always to be active during gameplay but you said It's highly recommended to not disable "Auto handle active state" why? why it's recommended to not disable this option?

    I need to use only one camera for my game.
     
  15. Casanuda

    Casanuda

    Joined:
    Dec 29, 2014
    Posts:
    53
    Hi,

    Works great!

    Thanks
    Cas
     
    nuverian likes this.
  16. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Hi @nuverian

    Is it possible to pathfind to a point whilst using root motion to move the character along the path?

    I know you can do it in unity by setting the navmesh agent speed to a very low value, but i'm not sure how to achieve this in SLATE.

    Thanks,
    Mark
     
  17. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,
    I'd recommend to not disable "Auto Handle Active State" only for the case of avoiding confusion on how Slate works by default, but if you want the Render Camera to always remain active and unaffected by the cutscenes, then by all means disable it. Nothing wrong in doing so as long as that is what you want :)

    Thanks!

    Great! Thanks for letting me know. You are very welcome :)

    Hey,
    When Root Motion is enabled, the position and rotation of the gameobject is totally controlled by the RootMotion itself and because of this, it is not possible to alter the position/rotation of that gameobject in any other way, like for example by using the Pathfinding action clip. The RootMotion will still determine the exact position and rotation the gameobject will have at a certain time within the cutscene and any position/rotation change will simply be overridden.
    What you said though, gave me an idea which I will have to try and see how it works :)

    Thank you!
     
    ksam2 likes this.
  18. Tezika

    Tezika

    Joined:
    Dec 8, 2015
    Posts:
    3
    Hi, I have some confusion about creating the custom ActionClip.Is there any way for us to customize the ActionClip's inspector stuff?
    upload_2017-9-12_15-16-32.png
    Yet I've never found some methods to override, like OnXXInspector(), is there any workaround?

    Thx!
     
  19. flashframe

    flashframe

    Joined:
    Feb 10, 2015
    Posts:
    789
    Try

    Code (CSharp):
    1. protected override void OnClipGUI(Rect rect){}
     
    nuverian likes this.
  20. Tezika

    Tezika

    Joined:
    Dec 8, 2015
    Posts:
    3
    Hi,flashframe
    Thanks for your response.

    Code (CSharp):
    1. protected override void OnClipGUI(Rect rect){}
    However, it doesn't seem to work well.if I override this method, the stuff will appear on the ActionClip.

    upload_2017-9-13_11-21-51.png


    e.g. I overrode the OnClipGUI() to display some text.

    Actually, I wanna override the stuff of the configuration inspector.

    upload_2017-9-13_11-26-20.png

    e.g I suppose to remove the field,"Target Objects", from the Inspector.
     
  21. flashframe

    flashframe

    Joined:
    Feb 10, 2015
    Posts:
    789
    Ah sorry! In that case you just need to create an editor script for your custom ActionClip that inherits from ActionClipInspector. It should go in an Editor folder like all your other custom inspectors.

    Something like this:

    Code (CSharp):
    1. using UnityEditor;
    2. using UnityEngine;
    3.  
    4. namespace Slate.ActionClips{
    5.  
    6.     [CustomEditor(typeof(MyCustomActionClip), true)]
    7.     public class MyCustomActionClipInspector : ActionClipInspector {
    8.  
    9.         private MyCustomActionClip action{
    10.             get {return (MyCustomActionClip)target;}
    11.         }
    12.  
    13.         public override void OnInspectorGUI(){
    14.             ShowCommonInspector(false);
    15.             ShowAnimatableParameters();
    16.  
    17.             //DO STUFF HERE
    18.  
    19.             if (GUI.changed){
    20.                 action.Validate();
    21.             }
    22.         }
    23.     }
    24. }
     
    nuverian likes this.
  22. Tezika

    Tezika

    Joined:
    Dec 8, 2015
    Posts:
    3
    Thank a lot for your solution:)
     
    nuverian likes this.
  23. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Hello again,

    How do I go about changing the post processing stack in a cutscene?

    Kindest,
    Mark
     
  24. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey!
    Do you mean changing the profile that the PostProcessingBehaviour attached on the camera is currently using, so that each cutscene is using a different profile, or something completely different? Can you please clarify?
    Thank you!
     
  25. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Hi there,

    I'd like to animate the fog (for example) to be really close to the camera, and then smoothly expand it outward to be less dense.

    Essentially I just want to play with the settings of the post processing profile during runtime.

    I feel like I'm probably missing something.

    Thanks,
    Mark
     
  26. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    Due to how the PostProcessingBehaviour component is made by not having any exposed public properties, animating the assigned profile's parameters is not possible out of the box (it's not possible even with Unity's Animation system). As such, animating the profile parameters will require a new custom component which will have exposed (and thus animatable) properties and which will act as an intermediate "bridge" to the actual profile parameters.

    I would gladly create this component for you of course, but before I do, I will need to first add another feature to Slate, that is to make it possible to animate struct properties which are serialized directly within a component, and which feature is essential to the solution I described before, since the PostProcessingStack system is using structs for the different effect settings it has. I hope the above wasn't too much confusing, but the short story is, that even though currently is not possible, I am working towards making what you require easy to do :)

    Regarding Fog specifically (even though I understand it was but an example in your post), you can use the "Environment/Animate Fog" action clip, which can be added in an Action Track of the Director Group, to animate the fog parameters, considering that Fog is enabled in the Unity Lighting Settings.
    AnimateFog.png

    Thanks!
     
  27. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hello everyone,
    SLATE 50% off Summer Sale will soon be over and back to it's full price point.
    If you were thinking of getting SLATE, this might be a good time to do it before the sale ends! :)
     
    ksam2 likes this.
  28. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    507
    I can import this asset in a new project but every time I import to my own project unity get crash. I have same issue with "Skele" asset too!
     
  29. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    58
    Hello,

    I am new to SLATE, learning it at the moment.
    I will need to use it among others things to have moving cars in a cutscene. I tried searching the forums about this and couldn't find relevant specific information about this yet, but noticed that some people do use it to control vehicles.

    What approach would be best with SLATE?
    The models consist of a car body and separate wheels. It would be nice to have the front wheels turn according to the path of movement, and also to have wheel rotations corresponding to speed.

    One aspect to note: at runtime the cutscene will need to be played similarly to a video, the user will have a play/stop/rewind/playback-speed control GUI.

    I would welcome some ideas about this.
     
  30. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,
    Hmm. Is there any error log in the console after you re-open Unity? When you re-open Unity are the files imported anyway or the crash occurs before importing them? Does the editor log file shed any light on why the crash happened? You can find the editor log file at for example "C:\Users\YOUR_USERNAME\AppData\Local\Unity\Editor".

    Let me know.
    Thanks.

    Hello and welcome :)

    What you describe will certainly require the creation of a custom action clip, considering the fact that you want the rotation of the wheels to be procedural and automated and because the behavior of wheels is a bit of special case as well :)

    Probably the best way to start of, would be to use a Path ("Tools/Slate/Extra/Create Bezier Path") and then create a custom clip that utilize that path and controls/animates the wheels in the specific way you require. A good starting point on how to utilize Slate Paths, is the included action clips "Follow Path" and "Animate on Path", which could also by themselves be used for animating the body of the car alone, or you could implement the body animation within your custom action clip as well, thus to keep everything in one place (your action clip).

    I have a few ideas on how what you want can be achieved within an action clip and I'm more than glad to try it out and let you know! If you want, please start a topic on the Slate Forums and as soon as I have something, I will update you there :)

    Thanks!
     
  31. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    58
    Thanks for your response! I have started experimenting with the Follow Path action, and also started a new topic about this in the SLATE forums on your website. I also descibed some special cases there, and while I am not trying to push you into such custom clips, I would love to hear your thoughts about those.

    Talking about paths: I can create a path and add control points, move them, modify tangents and all, but how can I make sure that all points and tangents are on the same horizontal surface? Even, if I accidentally move a tangent in perspective view by chance, how can I set it back to horizontal later? And how can I choose one point and set its coordinate numerically?
     
  32. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    58
    Hello nuverian,

    Have you already made the above work outside the editor?

    This question is related to my other post about animating cars.
    These cars are actually bringing cargo to a larger truck, and the animation for each car consists of 3 parts: arriving beside the truck, waiting there until cargo unloading is finished, and leaving the truck.
    There is a need to create a dynamic schedule at runtime for the cars before playing the whole cutscene animation, defining the arrival and the departure times for each car.
    Each car arrival and departure animation is already done in one large cutscene at the moment. Is there a solution to adjust the starting points of the animation clips according to this dynamic schedule right before playing the whole cutscene?

    My other idea is to put the animation of each car into separate cutscenes with "Arrival" and "Departure" sections, then insert these into a global cutscene during runtime as subcutscenes according to the adjusted schedules, and then finally start playing. Actually, this would be the preferred option, as each car's animation may involve animating several related objects on separate action tracks.

    Are any of the above runtime options possible? Do you have perhaps some other suggestion on how to handle this at runtime?
     
  33. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,
    I have replied to your email about your question. If you require any more help, please let me know!
    Thanks!
     
  34. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    58
    Indeed, we had some email conversation with nuverian, and although the runtime API is not yet available, we found a workaround for my case.
    Thanks nuverian, your support is outstanding! :)
     
  35. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Hello @nuverian,
    I'm trying to create new clips modifying the Captions and PlayAudio ones in order to add localization features into them.
    Right now, I'm using a simple custom localization system, where I just use a string key to know which text and audio clip path to use, depending on the language I set in the game options.

    I've managed to get a LocalizedCaptions script to work, but only during Play mode. What I've done, is that the clip looks for the corresponding language and localized text on OnEnter() and replaces the text variable with the loaded string.

    LocalizedCaptionsSlate.PNG

    But of course, while on the Editor this doesn't reflect the language I set on the options script (just a public enum variable where I select the language). Ideally, I would like a situation where when I select the "English" language on my options script, the Captions and PlayAudio scripts can get an event and automatically display the corresponding text/audio.

    In the above image, when I set the "overworld_voice_01" key (or if this is already set, when I change the language in the options script), I would like the Text field to automatically show the script phrase I have, and not the current placeholder.

    This is the PlayLocalizedAudio I've edited now. I would like to use a similar approach. Just have the placeholder file in the AudioClip field, and then when setting the localization key or changing the language, replace it with the corresponding one.
    LocalizedAudioSlate.PNG


    Could I get some help on this regard? I'm still new to Inspector/Editor scripting stuff, so if I could get some guidance with this it would be very welcome.

    I've managed to update text strings of game objects I have on the gameplay scenes when changing the language option while on the Editor, using OnValidate() and delegates/events, but I'm not sure if this can work the same way with Slate, or if there are specific methods I should use for this.

    Thanks!
     
  36. namdo

    namdo

    Joined:
    Feb 23, 2015
    Posts:
    200
    I'm having an issue. When I pathfind to an object, when my character gets to the end of the object, he teleports back to the start. This only happens when there's an animation playing with the animator track. When I disable it, the character stays at the end of the path.

    Another issue, I start a SLATE cutscene from AC. If I use Adventure creator's pathfind system to walk to a marker, the character doesn't move.
     
  37. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    647
    Hello is slate already support Text Mesh Pro. I would to add that I already have slate and soon start to create cutscenes and would be great to know that ;)
     
  38. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey!

    I am sorry, but it seems I missed your post. I check the official forums much more often.
    Regarding your question, there are really a lot of ways to go about it, but honestly the simplest solution and the one that I would have done, is to only serialize the localization "KEY" and within the ActionClip OnUpdate method, simply display the localized text dynamically, instead of trying to "sync" a serialized text variable whenever any change is made to either the key or the language enum.
    For example:
    Code (CSharp):
    1. public class MyClip : ActorActionClip {
    2.  
    3.     public string key;
    4.  
    5.     protected override void OnUpdate(float time){
    6.         DirectorGUI.UpdateSubtitles(LocalizationManager.GetLocalizedText(key), Color.white);
    7.     }
    8. }
    If you really want to update the serialized text shown in the inspector, then you could probably use events to do that.
    So, let's suppose that you have some LocalizationManager like this:
    Code (CSharp):
    1. //example localization manager
    2. public class LocalizationManager : MonoBehaviour {
    3.  
    4.     //event fired on language change
    5.     public static event System.Action onLanguageChanged;
    6.  
    7.     public static Language _language;
    8.     //the current language used
    9.     public static Language language{
    10.         get {return _language;}
    11.         set
    12.         {
    13.             if (_language != value){
    14.                 _language = value;
    15.                 onLanguageChanged();
    16.             }
    17.         }
    18.     }
    19.  
    20.     //return localized text from provided key
    21.     public static string GetLocalizedText(string key){
    22.         ///Porbably retrieve from some dictionary after checking the current language
    23.         return "Something";
    24.     }
    25. }
    You can then subscribe to the event in the ActionClip OnAfterValidate method and change the variable accordingly:
    Code (CSharp):
    1. public class MyClip : ActorActionClip {
    2.  
    3.     public string dialogueKey;
    4.     public string dialogueText;
    5.  
    6.     //this is called both in editor and runtime
    7.     //subscribe to the onLanuage event
    8.     protected override void OnAfterValidate(){
    9.         //we un-subscribe first to ensure one call
    10.         LocalizationManager.onLanguageChanged -= OnLanguageChanged;
    11.         LocalizationManager.onLanguageChanged += OnLanguageChanged;
    12.     }
    13.  
    14.     protected override void OnUpdate(float time){
    15.         DirectorGUI.UpdateSubtitles(dialogueText, Color.white);
    16.     }
    17.  
    18.     void OnLanguageChanged(){
    19.         //Do something, like for example:
    20.         dialogueText = LocalizationManager.GetLocalizedText(dialogueKey);
    21.     }
    22. }
    I really think though that the first solution is far better :)
    Let me know what you think.

    Thanks!


    Hello,
    Considering I understood correctly, you are probably using an Animator Track and have the "Use Root Motion" enabled in the track's inspector. You would want to disable "Use Root Motion" for the track if you are to animate the object with some other means, like for example pathfinding.
    Let me know if that indeed was the case, and if disabling "Use Root Motion" (In the Animator Track Inspector), works for you.

    Thanks!

    Hey,
    Thanks for getting Slate :)
    There is no specific support for TextMeshPro, but if you just want to animate some of the object properties, then that would already be possible using the "Animate Properties" clip or the "Properties Track".
    If you are after something different, or if this does not work for you, please let me know and I will be able to take a closer look at integrating TextMeshPro after the current version I am working on is finished ;-)

    Let me know.
    Thanks!
     
  39. namdo

    namdo

    Joined:
    Feb 23, 2015
    Posts:
    200
    Yeah Rootmotion was the issue. I disabled it and it worked perfectly.
     
  40. Jakub_Machowski

    Jakub_Machowski

    Joined:
    Mar 19, 2013
    Posts:
    647
    Hello Thank your reply ;)Also one more wuestion is there possiblity of integration withhttps://assetstore.unity.com/packages/tools/audio/master-audio-aaa-sound-5607 Master Audio, This is the most Popular audio system on asset store ;)
     
  41. tinyant

    tinyant

    Joined:
    Aug 28, 2015
    Posts:
    127
    Does The Cool SLATE support animation Root motion in PlayAnimationClip and In blending animation system?
    When make a cinema or cutscene it's best to use root motion to get applicable movement for character to avoid sliding step when you key frame the character's position by your own?.
    Thanks.
     
  42. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Thanks for letting me know.
    I am glad that it worked for you!

    Hello,
    That could be possible, yes :). Master Audio has really a lot of functionality. Is there any specific one that you would like to see in such an integration? Just checking with you, so that I make sure the required functionality is included in case I create such an integration with Master Audio.
    Thanks!

    Hello,
    Yes, Slate supports animation Root Motion when playing back animation clips.
    The root motion is also fully preview-able (by scrubbing) in realtime and within the editor :)
    Thanks!
     
  43. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Hi! Thanks for the reply, I saw it when you posted it. As you say, the first one is the simplest method, and it's what I had done (just that instead of getting the text on Update I was getting it on Enter). However, we really wanted to have the changes reflect on the Inspector while we create and test cutscenes and gameplay, so it was important to have all the setup with events and such. The OnAfterValidate method is what we were missing, so after just a bit of work restructuring our managers setup we have our simple localization system working, and we can change subtitles and audio to different languages even in the middle of a cutscene, and reflect this while working on the Editor. :)

    Having different languages with subtitles and audio will probably cause some troubles with lengths and timings, but that's another issue to look in the future... Maybe we can have separated tracks, one per each language and enable only that one?
     
  44. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Thanks for the follow up :)

    That is awesome to hear and glad that you found a solution using OnAfterValidate.

    Indeed having different audio per language is a tricky part as far as timing goes, since generally speaking, other cutscene clips would be synced about the dialogue audio tracks, thus changing the audio to another language would naturally make other clips de-sync, since each language may differ in length even if only by a few seconds.

    You could have different tracks enable/disable based on the current language used, but I think that this would mean a lot of duplicate (non-audio) tracks that their only difference would be to have slight clip time adjustments to make them sync with the current dialogue audio track used.

    For your information, CD Projekt (Witcher 3) has made a presentation at GDC '16 wherein they specifically state that problem about localization that they have encountered as well as their solution within their in-house timeline tool.

    Here is the presentation at that specific localization section, even though it's a great presentation overall to watch.


    Their solution of "scaling" the whole cutscene in respects to the audio clips, even though not perfect, it still works well.
    That solution presented though, is not something that is possible in Slate, even though it is something that I got inspired by and looking at ways to implement something similar (probably by somehow utilizing the already existing "Sections" in Slate), but that is something yet to be discovered :)
     
  45. alteredmatter

    alteredmatter

    Joined:
    Sep 14, 2016
    Posts:
    26
    Thanks for the info, I will check the talk!
    Yes, having duplicate tracks would be kind of a lazy/cheap solution, but we will have a low number of cutscenes on the game, and we don't believe we'll have much different languages for the audio.
    Anyway, maybe we can come up with a simple system where we specify the time frame to show each one of the subtitles parts for each language, in order to have just a single track.


    Also, since I've seen you sometimes check other assets or software people use and think about integrating them in SLATE, have you considered having support for other audio engines compatible with Unity, like Fmod studio? We particularly use this one on our game, so that we can have dynamic music in the levels. This means that we'll have to exclusively use this for all sound assets, and use it inside SLATE as well.

    There could be some custom action clips so that it's possible to call the required fmod event and play it, trigger modifications or animate the parameters that control the music, etc. Even just an integration with this basic functionality would be cool to have. :)
     
    Last edited: Dec 19, 2017
  46. wanjg

    wanjg

    Joined:
    Apr 5, 2017
    Posts:
    6
    hi,I want to buy slate for my project that will be made by Unity 2017.3. And will the tool continue to be updated?
     
  47. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Hey,

    I haven't previously thought of support audio engines other than the default one, but it might be worth it. I will check FMOD studio out and see what can be done with it :)

    If you end up using the solution of multiple tracks enabled/disabled per current language used by the way, and you require any help with the implementation, don't hesitate to let me know of course!

    Thanks.

    Hello,
    Yes, Slate will continue to be updated for the long future. You have nothing to worry about :)
    Thanks.
     
  48. wanjg

    wanjg

    Joined:
    Apr 5, 2017
    Posts:
    6
    slate bug.gif Help!!!
     
  49. wanjg

    wanjg

    Joined:
    Apr 5, 2017
    Posts:
    6
  50. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Happy New Year Everyone!

    Hey,
    Because the actor's position/rotation is controller by the RootMotion of the animation, you can't animate the actor's position manually, since the RootMotion position is overriding your animation.
    If you want to manually keyframe the actor's position, please select the 'Animator Track', and in it's inspector, disable the "Use Root Motion" option. Doing so you will be able to keyframe the position without the RootMotion taking over.

    Let me know if that works for you.
    Thanks.