HOTween: a fast and powerful Unity tween engine

Hello,

I worked on this a lot, and it’s finally ready…

HOTween is a fast, type-safe object-oriented tween engine for Unity, compatible with all of Unity’s scripting languages.
It’s free, easy to use, and comes with many options, among which the possibility to create sequences of tweens that are controlled as a single animation.
Oh! And now it also comes with a Visual Editor! :slight_smile:

You can download it and find a lot more info here:

Key Features
Animation speed
HOTween is VERY fast and reliable. Just check HOTween’s Test Run and see for yourself.
Fast scripting
Coding-wise, HOTween is built so that code-assist will immediately show you all the available options, while helping you to auto-complete them quickly. Also, when using plugins, just write “Plug” (or even “Pl” is enough), and code-assist will show you all the available ones.
Type-safety
The only string you will have to write is the name of the property to tween. All the rest is fully integrated into code-assist and auto completion.
Multiple update choices
Each tween can be independently set to update at each Update, LateUpdate, FixedUpdate, or to use a special time-independent update, which will not be influenced by changes to Unity’s internal timeScale (useful to animate GUI elements while a game is paused).
Make it simple, make it complex
You can write a simple tween just like this:
HOTween.To(myObject, 1, “myProperty”, 2);
or you can create complex animations of multiple properties, with all the parameters you want, and nest them inside Sequences: both of them are controlled in the same easy way.
Loops
You can create simple loops (X to Y, then restart), yoyo loops (X to Y, then Y to X and repeat), plus yoyo inverse loops, which work like yoyo loops, but invert their easing when moving back to the original position. You can set the exact number of loops you want, or let them go on forever.
Time scale
You can set different time scales for every tween, and you can change them even while the tweens are running.
Plugins
HOTween automatically detects the type of property you are animating, and applies the relative default plugin. But you can always choose another one (for example, when you animate a Vector3, you can decide to use a plugin which will animate only one of the axis, or combine them anyway you want).
Callbacks
Easy to set callbacks, to invoke the function of your choice (public, private, static, whatever) when something happens during the animation.
Common Interface
Is it a Tweener or a Sequence? Who cares? They both share the same IHOTweenComponent interface, thus you can control each of them in the same way.
Powerful controls
A full range of controls: Play, Pause, Reverse, Rewind, Restart, Complete, GoTo, GoToAndPlay.

HOTween Visual Editor
A single dockable panel, to which you can add all the targets and properties you wish to tween in each scene, allowing you to tween everything, including any attached MonoBehaviours properties and fields.

NEW! HOTweenComponent
Works like HOTween Visual Editor, but can be attached to a GameObject, to tween only its Components. Works greatly with prefabs :slight_smile:

A note on iTween
I’d like to note that HOTween doesn’t aim to be “better” than iTween. Simply put, it’s a very different engine, more object-oriented than gameObject-oriented, for different coding tastes, and both can work quite well together.

A note on the name
Nope, the name doesn’t derive from HOT + Tween: it’s just that my tiny company was named Holoville, and thus I usually place a HO in front of my scripts, to recognize them more quickly. Also, I had no idea of the slang meaning of “tween”. Now that I do, I see I gave it the most ridiculously horrible name ever. HOTween V2 will definitely not be named HOTween :stuck_out_tongue:


EDIT additional comments on the ridiculousness of the name

2 Likes

Wow, this is very fast compared to iTween… assuming your example comparison test is real :slight_smile:

Looks great!

Lost a little bit of excitement when I saw the .dll, I hope it is bug free :stuck_out_tongue:

Sell me full source on the asset store :slight_smile:

@Seon: the comparison is real, and I think I done a good work about keeping it really “equal” on both side. But you’re right to doubt. I wanted to post the code for the example, but I started feeling tired. I will do it tomorrow :slight_smile:

@DTreble I know, but I really can’t live without packages :stuck_out_tongue: Anyway, I plan to release the free full source soon (though it will still need to be compiled into a DLL in order to work - just to avoid messing up with other Unity classes that might have the same names). And in the meantime I will quickly fix eventual bugs (I’ve been testing it quite thoroughly, but obviously something will come out :-P)

@lzitmee: I wasn’t doubting, hence the smily face. It was an impressive speed comparison, especially at 1000+ cube counts.

BTW, are you aware that iTween 3 is very far in development and it’s massively faster?

Code can be in a namespace independently of being in a DLL. DLL is not equivalent to a namespace. In my understanding

Not in Unity.

–Eric

@Seon: Thanks for not doubting then :slight_smile: Actually I heard about iTween 3 (though I probably saw a speed demo that wasn’t complete), and I’m very curious about it. Anyway, when I started HOTween, I wasn’t expecting it to go this fast. The main reason I started it was that I wanted a more object-oriented tween engine than iTween (which I greatly respect, but it simply doesn’t suit my coding tastes/habits).

@DTreble: yup, but in Unity you can’t have two CS files with the same name, even if they’re in different folders and with different namespaces. Unless they’re DLL :stuck_out_tongue:

Posted a UnityPackage with the speed test comparison. You can get it here (linked in the test description).

More examples coming soon :slight_smile:

Sounds nice! Is this code based only or can we “click-create” tweenings in the editor as well?

It’s code based only. I never thought click-create editors to be very useful. Though, now that you mentioned it, I think it would be fun to see if I can quickly do it. I’ll give it a try, while I’m still under the influence of code-adrenaline :slight_smile:

That’s good. Sometimes it’s handy to change&play things on the fly and convert it to static code once it’s working well. Though that’s a coder’s point of view, artists prefer playing all day :wink:

Looks great. I’ve been wanting some time to implement my own type safe tweening system for Unity for a while. Looks like you’ve done the job for me. Itching to give it a go and will do so soon. Thanks for the hard work.

@Jake L.: hey, who doesn’t like to play all day. It’s simply that what coders describe as “playing”, artists describe as “being a nerd” :smile: And I’m definitely being a nerd now: totally into the click-create thing, trying to see if some interesting ideas I got will actually work.

@wesllg: thanks for the nice words :slight_smile: Eager to know what you’ll think about it.

Hey, just created a “click-create” visual editor for HOTween (thanks to Jake L. enticing me to do it). You can also see a demo/tutorial video in the first post.

Any feedback would be greatly appreciated :slight_smile:

Nice one!

Absolutely crazy and fantastic !!!
Congratulations Izitmee for your click and create version !!!

6R

@iisjreg: thanks :slight_smile: And by the way, Woodenvan looks great: love the mood.

@p6r: thanks a lot!!! :slight_smile: I thought it would be easier but then I came out with the idea of the “click&tween everything” interface and development became hell, but I managed in the end :stuck_out_tongue:

Really great work. Impressive!!

Lame question is this PC only? As I saw it has a dll to install.
Is there a OSX installer?

@24pfilms: Hey thanks a lot :slight_smile:
Actually, I have to admit that I’m quite ignorant about Mac, and I don’t have one on which I could make tests. But HOTween DLL is not a true plugin, but a simple assembly, thus it should work in OSX too. Could you try it and let me know (I’m being shameless by asking, thus do it only if it’s not a problem)?
If it shouldn’t work, I’ll think about converting the DLL as full open source code. Though that would be bad, due to the fact that Unity doesn’t support namespaces, and thus I’d have to prefix all classes so they don’t mess with existing ones :frowning: