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

▶ I2 Text Animation ◀ (Create and Edit beautiful animations your Texts)

Discussion in 'Assets and Asset Store' started by Inter-Illusion, Aug 8, 2017.

  1. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    598
    Hi Guys!

    My newest plugin I2 Text Animation is now available in the AssetStore!
    It allows playing animations on each character of your texts.



    I2 Text Animation easily integrates with your existing projects:
    - Unity UI
    - TextMeshPro
    - NGUI



    Some other features include:

    BASIC TRANSFORMS
    Modify each of the characters in the text. Applying effects like Scaling, Rotation, Color and Alpha, Position changes and others.


    COMPLEX SEQUENCES
    Combine each of the basic transforms to create elaborated animations with flashy effects.

    CUSTOM EDITORS
    All the sequences are shown in a custom editors that allow previewing and editing the animations with timeline, delays, separation, target characters and a lot of other parameters.


    TARGETS
    Each animation can be applied to the entire text, or to just a few characters, words or even a phrase. This allows highlighting sections of your texts.

    LOTS OF PRESETS
    Each animation can be applied to the entire text, or to just a few characters, words or even a phrase. This allows highlighting sections of your texts.




    For those who know about my other plugin I2 SmartEdge, this plugin contains all the Animation code from there, cleanned up of dependencies with the rendering and improved to be as efficient as possible when playing animations!

    If you already have I2 SmartEdge, please, send me your invoice number and I will grant you access to I2 Text Animation as well!

    Contact Information & Useful Links
    Roadmap: Trello Roadmap
    Demo: Example Scenes
    AssetStore: I2 Text Animation
     
  2. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    598
    Here is a preview of some of the animation parameters in action:

     
  3. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
  4. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
    Well... I still could not make it work!

    Assets/Plugins/I2/Text Animation/Extensions/TextAnimationTMPro.cs(20,7): error CS0246: The type or namespace name `TMPro' could not be found. Are you missing an assembly reference?

    Strange, because I have TMPro and I'm using it with DOTween and everything else.

    I did try on a new project and had the same problem after adding I2_TMPro Define Symbols.

    Edit. I Fixed it, I had to move "Text Animation" folder OUTSIDE the Plugins Folder to make it works.
     
  5. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
    Well... still not working with TextMeshPro. Any advice?

    Code (csharp):
    1.  
    2. System.InvalidOperationException: There was an error reflecting type 'I2.TextAnimation.SE_AnimSequence_Position'. ---> System.InvalidOperationException: There was an error reflecting field '_AnimBlend_From'. ---> System.InvalidOperationException: There was an error reflecting type 'I2.TextAnimation.SE_AnimSequence_Position.eAnimBlendMode'. ---> System.InvalidOperationException: Types 'I2.TextAnimation.SE_AnimSequence_Position.eAnimBlendMode' and 'I2.TextAnimation.SE_AnimSequence_Float.eAnimBlendMode' both use the XML type name, 'eAnimBlendMode', from namespace ''. Use XML attributes to specify a unique XML name and/or namespace for the type.
    3.   at System.Xml.Serialization.XmlReflectionImporter.GetTypeMapping (System.String typeName, System.String ns, System.Xml.Serialization.TypeDesc typeDesc, System.Xml.Serialization.NameTable typeLib, System.Type type) [0x00081] in <03e950671d964403ab67ff751c460757>:0
    4.   at System.Xml.Serialization.XmlReflectionImporter.ImportEnumMapping (System.Xml.Serialization.EnumModel model, System.String ns, System.Boolean repeats) [0x00072] in <03e950671d964403ab67ff751c460757>:0
    5.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Boolean repeats, System.Boolean openModel, System.Xml.Serialization.RecursionLimiter limiter) [0x00162] in <03e950671d964403ab67ff751c460757>:0
    6.    --- End of inner exception stack trace ---
    7.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Boolean repeats, System.Boolean openModel, System.Xml.Serialization.RecursionLimiter limiter) [0x00393] in <03e950671d964403ab67ff751c460757>:0
    8.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Xml.Serialization.RecursionLimiter limiter) [0x00000] in <03e950671d964403ab67ff751c460757>:0
    9.   at System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping (System.Xml.Serialization.MemberMapping accessor, System.Xml.Serialization.FieldModel model, System.Xml.Serialization.XmlAttributes a, System.String ns, System.Type choiceIdentifierType, System.Boolean rpc, System.Boolean openModel, System.Xml.Serialization.RecursionLimiter limiter) [0x00fc0] in <03e950671d964403ab67ff751c460757>:0
    10.   at System.Xml.Serialization.XmlReflectionImporter.ImportFieldMapping (System.Xml.Serialization.StructModel parent, System.Xml.Serialization.FieldModel model, System.Xml.Serialization.XmlAttributes a, System.String ns, System.Xml.Serialization.RecursionLimiter limiter) [0x00083] in <03e950671d964403ab67ff751c460757>:0
    11.   at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers (System.Xml.Serialization.StructMapping mapping, System.Xml.Serialization.StructModel model, System.Boolean openModel, System.String typeName, System.Xml.Serialization.RecursionLimiter limiter) [0x00235] in <03e950671d964403ab67ff751c460757>:0
    12.    --- End of inner exception stack trace ---
    13.   at System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers (System.Xml.Serialization.StructMapping mapping, System.Xml.Serialization.StructModel model, System.Boolean openModel, System.String typeName, System.Xml.Serialization.RecursionLimiter limiter) [0x003b6] in <03e950671d964403ab67ff751c460757>:0
    14.   at System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping (System.Xml.Serialization.StructModel model, System.String ns, System.Boolean openModel, System.Xml.Serialization.XmlAttributes a, System.Xml.Serialization.RecursionLimiter limiter) [0x0015b] in <03e950671d964403ab67ff751c460757>:0
    15.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Boolean repeats, System.Boolean openModel, System.Xml.Serialization.RecursionLimiter limiter) [0x002af] in <03e950671d964403ab67ff751c460757>:0
    16.    --- End of inner exception stack trace ---
    17.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Boolean repeats, System.Boolean openModel, System.Xml.Serialization.RecursionLimiter limiter) [0x00393] in <03e950671d964403ab67ff751c460757>:0
    18.   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeModel model, System.String ns, System.Xml.Serialization.XmlReflectionImporter+ImportContext context, System.String dataType, System.Xml.Serialization.XmlAttributes a, System.Xml.Serialization.RecursionLimiter limiter) [0x00000] in <03e950671d964403ab67ff751c460757>:0
    19.   at System.Xml.Serialization.XmlReflectionImporter.IncludeType (System.Type type, System.Xml.Serialization.RecursionLimiter limiter) [0x00037] in <03e950671d964403ab67ff751c460757>:0
    20.   at System.Xml.Serialization.XmlReflectionImporter.IncludeType (System.Type type) [0x00007] in <03e950671d964403ab67ff751c460757>:0
    21.   at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace, System.String location, System.Security.Policy.Evidence evidence) [0x0002a] in <03e950671d964403ab67ff751c460757>:0
    22.   at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace, System.String location) [0x00000] in <03e950671d964403ab67ff751c460757>:0
    23.   at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Type[] extraTypes) [0x00000] in <03e950671d964403ab67ff751c460757>:0
    24.   at I2.TextAnimation.SE_Animation.LoadFromSerializedData (System.String data) [0x0003c] in D:\Games\Unity\games\Match3\Seven Sails Games\My Downtown\Assets\I2\Text Animation\Scripts\Vertex Effects\Animation\SE_Animation.cs:186
    25. UnityEngine.Debug:Log(Object)
    26. I2.TextAnimation.SE_Animation:LoadFromSerializedData(String) (at Assets/I2/Text Animation/Scripts/Vertex Effects/Animation/SE_Animation.cs:191)
    27. I2.TextAnimation.SE_AnimationPreset:CreateAnimation() (at Assets/I2/Text Animation/Scripts/Vertex Effects/Animation/SE_AnimationPreset.cs:15)
    28. I2.TextAnimation.SE_AnimationSlot:CreateAnimation() (at Assets/I2/Text Animation/Scripts/Vertex Effects/Animation/SE_AnimationSlot.cs:30)
    29. I2.TextAnimation.SE_AnimationSlot:get__Animation() (at Assets/I2/Text Animation/Scripts/Vertex Effects/Animation/SE_AnimationSlot.cs:22)
    30. I2.TextAnimation.TextAnimation_Inspector:OnGUI_AnimationSlot() (at Assets/I2/Text Animation/Editor/Inspectors/TextAnimation_Inspector_Animations.cs:165)
    31. I2.TextAnimation.TextAnimation_Inspector:OnGUI_Animations() (at Assets/I2/Text Animation/Editor/Inspectors/TextAnimation_Inspector_Animations.cs:73)
    32. I2.TextAnimation.TextAnimation_Inspector:OnInspectorGUI() (at Assets/I2/Text Animation/Editor/Inspectors/TextAnimation_Inspector.cs:70)
    33. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
    34.  
     
  6. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    598
    Hi,
    I'm unable to reproduce this issue.
    I tried this:
    - Downloaded the latest version of I2TextAnimation into a project
    - Got the latest TMPro
    - Moved the Assets\Plugins\I2 to Assets\I2
    - Added I2_TMPro to the Scripting Define Symbols
    - Created an scene with a TMPro text and added an animation

    That seems to be working fine for me, Am I missing any step?
    I noticed that sometimes Unity freaks out a bit when installing TMPro because of the dll switching that it does. Did the problem still happens after restarting the editor?
     
  7. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
    I was able to make it work!

    I just moved the eAnimBlendMode definition from multiple locations to a single one.

    Code (csharp):
    1.  
    2. public enum eAnimBlendMode { Offset, Replace };
    3.  
    I'm using the Paid Version of TextMeshPRO (instead of the Free), so I don't know if this is the reason that I had to move I2TextAnimation out of plugins folder to make it work.

    But after changing the ENUM now is working as expected! Thanks for the GREAT ASSET and support!
     
    Inter-Illusion likes this.
  8. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
    Found more 2 bugs!

    - It still does not supports TextMeshPro, only TextMeshProUGUI.
    - When you select an animation from the List, if you change something on it, it will change all over the place that is using the same animation. I do have to clone it and make changes to the clone to make sure it is unique.
     
  9. sevensails

    sevensails

    Joined:
    Aug 22, 2013
    Posts:
    483
    Hi @Inter-Illusion

    Bug 1 - I made a workaround for the bug of the Flicker before starting an animation.

    Added this "ugly" code at the end of SE_Animation.Play
    Code (csharp):
    1.  
    2. bool b1 = false;
    3. bool b2 = false;
    4. AnimUpdate(0, se, ref b1, ref b2);
    5.  
    Bug 2 - Not working with TextMeshPro, only TextMeshProUGUI I fixed it with a small change at your code that I don't remember now, but I'm sure it's a easy fix to you.

    Bug 3 - When I want to change an existing animation, I have to duplicate it, then rename and then make the desired changes. I think that should be more explicit, something informing that you cannot change the current animation or it will also be changed everywhere.

    I hope a official update is coming soon! =)

    Thanks again for the great asset!
     
  10. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    598
    Hi,
    Thanks for reporting this, I'm almost finished with the new update of the plugin, there are a few new features, new types of animations and parameters that will for sure make a difference!
    Will also make sure this bugs get fixed in the new release.

    Thanks!
    Frank
     
  11. wagenheimer

    wagenheimer

    Joined:
    Jun 1, 2018
    Posts:
    322
    sevensails likes this.
  12. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    598
    I have to update the trello with the new changes.
    I'm about to upload an I2 Localization and after that I will finish testing the changes to TextAnimation and have a new update right after.
    Hope that helps,
    Frank
     
    wagenheimer likes this.
  13. wagenheimer

    wagenheimer

    Joined:
    Jun 1, 2018
    Posts:
    322
    Is the new version already available?

    I have a problem with IL2CPP.
    Code (csharp):
    1.  
    2. System.NotSupportedException: C:\Program Files\Unity\Editor\2018.2.0f1\Editor\Data\il2cpp\libil2cpp\icalls\mscorlib\System.Reflection.Emit\AssemblyBuilder.cpp(20) : Unsupported internal call for IL2CPP:AssemblyBuilder::basic_init - System.Reflection.Emit is not supported.
    3.   at System.AppDomain.DefineDynamicAssembly (System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.String dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, System.Boolean isSynchronized) [0x00000] in <00000000000000000000000000000000>:0
    4.   at System.AppDomain.DefineDynamicAssembly (System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access) [0x00000] in <00000000000000000000000000000000>:0
    5.   at System.Xml.Serialization.CodeGenerator.CreateAssemblyBuilder (System.AppDomain appDomain, System.String name) [0x00000] in <00000000000000000000000000000000>:0
    6.   at System.Xml.Serialization.TempAssembly.GenerateRefEmitAssembly (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.Security.Policy.Evidence evidence) [0x00000] in <00000000000000000000000000000000>:0
    7.   at System.Xml.Serialization.TempAssembly..ctor (System.Xml.Serialization.XmlMapping[] xmlMappings, System.Type[] types, System.String defaultNamespace, System.String location, System.Security.Policy.Evidence evidence) [0x00000] in <00000000000000000000000000000000>:0
    8.   at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace, System.String location, System.Security.Policy.Evidence evidence) [0x00000] in <00000000000000000000000000000000>:0
    9.   at System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Type[] extraTypes) [0x00000] in <00000000000000000000000000000000>:0
    10.   at I2.TextAnimation.SE_Animation.LoadFromSerializedData (System.String data) [0x00000] in <00000000000000000000000000000000>:0
    11.   at I2.TextAnimation.SE_AnimationPreset.CreateAnimation () [0x00000] in <00000000000000000000000000000000>:0
    12.   at I2.TextAnimation.SE_AnimationSlot.get__Animation () [0x00000] in <00000000000000000000000000000000>:0
    13.   at I2.TextAnimation.TextAnimation.OnEnable () [0x00000] in <00000000000000000000000000000000>:0
    14.  
     
  14. wagenheimer

    wagenheimer

    Joined:
    Jun 1, 2018
    Posts:
    322
    Now 2 years later, I still using it, but I have this problem with a project.

    Code (CSharp):
    1. Assets\Plugins\I2\Text Animation\Extensions\TextAnimationTMPro.cs(20,7): error CS0246: The type or namespace name 'TMPro' could not be found (are you missing a using directive or an assembly reference?)
     
  15. wagenheimer

    wagenheimer

    Joined:
    Jun 1, 2018
    Posts:
    322
    One year has passed, and I am still using this asset. It's unfortunate that there hasn't been an update since, as I'm still experiencing the same issues. However, I managed to find solutions for some of them:

    1 - To address the problem of missing TMPro, Select PlugIns/I2/Text Animation/I2 Text Animation.asmdef and add "Unity.TextMeshPro" to the Assembly Definition References.

    upload_2023-6-14_17-55-44.png
    2 - The code to prevent flickering is still necessary. Change SE_Animation.cs line 36 from

    Code (CSharp):
    1.   public void Play(TextAnimation se)
    2.        {
    3.            if (se != null)
    to

    Code (CSharp):
    1. public void Play(TextAnimation se)
    2.         {
    3.             bool b1 = false;
    4.             bool b2 = false;
    5.             AnimUpdate(0, se, ref b1, ref b2);
    6.  
     
  16. wagenheimer

    wagenheimer

    Joined:
    Jun 1, 2018
    Posts:
    322
    Will there be any upcoming releases for I2 Text Animation?

    I genuinely appreciate this tool and use it in all of my projects. However, there are still a few issues that need addressing, some of which I've already reported. Additionally, there are noticeable performance problems in the OnEnable function. It seems like a relatively straightforward matter to resolve, but I'm not well-versed in its internal workings.

    This is a fantastic asset, and I'm confident that many others are still using it as well. It would be greatly appreciated if some attention could be given to providing a new update.