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

DOTween (HOTween v2), a Unity tween engine

Discussion in 'Assets and Asset Store' started by Demigiant, Aug 5, 2014.

  1. gegagome

    gegagome

    Joined:
    Oct 11, 2012
    Posts:
    392

    I am not sure, I am not home yet but I am hoping something like this:
    fireworksSlider.rectTransform.rect.max = 50.0f;

    So the UGUI, the new Unity GUI inside a Canvas slider moves offscreen
     
    Last edited: Dec 10, 2014
  2. Aslan85

    Aslan85

    Joined:
    Feb 24, 2014
    Posts:
    14
    Hi Daniele,

    Your game at the ludum dare is very good.
    Shame, I can't vote for it (><)

    I have a question about Delay an Loop :
    I move a plateform from the right to the left. I set a 2 seconds delay and an infinite loops on it.
    The movement and the loop sequence start after 2 seconds. That's ok but if I want a delay between each loop, how I can do it ?
    I have to use another function at each end loop ?
     
  3. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Hi @Aslan85, glad you like the game :)

    In your case you should create a Sequence instead. First you use AppendInterval(2), then you Append your tween and you set your Sequence to loop. That way the interval will be included in the loop :)
     
  4. Aslan85

    Aslan85

    Joined:
    Feb 24, 2014
    Posts:
    14
    OK, perfect !
    I use PrependInterval(delay) and AppendInterval(delay) to add a Pause at every step.

    Thank you !
     
    Last edited: Dec 10, 2014
  5. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
  6. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Wow, this is a wonderful asset. I will definitely be donating to the cause.

    I do have a question though: I installed the package, and for a test decided to add a rigidbody2D rotate shortcut to my character when he jumps.

    It's a great effect, but I notice it only fires some of the time. Sometimes he just jumps, sometimes he also rotates. I can't see any reason in my code why it wouldn't rotate every time it jumps.

    Any thoughts?

    if (jump)
    {
    rigidbody2D.AddForce(new Vector2(0, jumpForce));
    rigidbody2D.DORotate(360, 1);
    anim.SetBool("ground", false);
    jump = false;
    }
    Thanks for an amazing piece of software.
     
  7. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Hi @jguarShark , glad you like it and thanks :)

    The reason it doesn't rotate is because you're using the default rotation mode, which is the "find shortest rotation within max 360°". In that case, 360° is the same as 0. Change the rotation mode to FastBeyond360 and it's done :)
    Code (csharp):
    1. rigidbody2D.DORotate(360, 1, RotateMode.FastBeyond360);
     
  8. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Wow, thanks for the quick response. When I use that though, Unity kicks out errors:

    Assets/Scripts/RunAndJump.cs(96,37): error CS1928: Type `UnityEngine.Component.rigidbody2D' does not contain a member `DORotate' and the best extension method overload `DG.Tweening.ShortcutExtensions.DORotate(this UnityEngine.Rigidbody, UnityEngine.Vector3, float, DG.Tweening.RotateMode)' has some invalid arguments

    Assets/Scripts/RunAndJump.cs(96,37): error CS1929: Extension method instance type `UnityEngine.Rigidbody2D' cannot be converted to `UnityEngine.Rigidbody'
     
  9. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Agh! my bad! I forgot to add the new rotation mode to rigidbody2D elements :B I will fix it tomorrow, but in the meantime you can do this and it will work :)
    Code (csharp):
    1. rigidbody2D.DORotate(360, 1).SetRelative();
     
  10. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Ok I got pretty confused with rigidbody2D rotations (sorry I actually never rotated a rigidbody2D before so I didn't realize the following facts). In short, contrary to how normal transforms/rigidbodies rotate, where Unity never stores rotations beyond 360°, with rigidbody2D that's exactly what happens. So the first "to 360" tween would happen, but the second wouldn't because you're actually telling it to go from 360° to the same 360°. SetRelative is the right way to go then (since it simply adds 360° to the current rotation, instead than going TO 360°) and no DOTween updates are required ;)
     
  11. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Thanks so much for the quick response. That fixed it right up.

    I'm doing some more testing, and finding a similar problem with DOFade.

    Code (csharp):
    1. if (fade)
    2. {
    3. spriteRenderer.DOFade(0, 1);
    4. Invoke("FullColor", 1.1f);
    5. }
    6.  
    7. voidFullColor()
    8. {
    9. spriteRenderer.DOFade(100, 0);
    10. }
    The first time I call it, the character fades right out over a 1-second period.

    Any time I call it after that, the fade doesn't start until maybe 3/4 of a second has passed, and then it rushes to zero.

    Any thoughts?
     
    Last edited: Dec 11, 2014
  12. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @jguarShark That happens because you're probably calling the fadeOut tween while the fadeIn tween is still running. In that case the previous tween overwrites the new one until it completes, then the fadeIn kicks in, but from the time position it had reached in the meantime so you see the animation rushing.
    I'd suggest using Sequences and killing any tween on your spriteRenderer before starting a new one (assuming you have only the fade tween). You can replace all your code with this:
    Code (csharp):
    1. if (fade) {
    2.    spriteRenderer.Kill();
    3.    DOTween.Sequence()
    4.       .Append(spriteRenderer.DOFade(0, 1))
    5.       .AppendInterval(0.1f)
    6.       .Append(spriteRenderer.DOFade(1, 1));
    7. }
    Also consider that the alpha of a sprite goes from 0 to 1, not 100 :p
     
  13. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Oh, excellent. Thank you so much. I will experiment with this. I figured it had something to do with needing to kill previous tweens, but wasn't sure how to do this.

    This is my first foray into tweening.

    I can see how a sequence makes a lot of sense here.
     
  14. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Thanks for that. Everything worked as expected except the call to Kill(), which throws a couple of errors.

    Assets/Scripts/RunAndJump.cs(97,40): error CS1928: Type `RunAndJump.spriteRenderer' does not contain a member `Kill' and the best extension method overload `DG.Tweening.TweenExtensions.Kill(this DG.Tweening.Tween)' has some invalid arguments

    Assets/Scripts/RunAndJump.cs(97,40): error CS1929: Extension method instance type `UnityEngine.SpriteRenderer' cannot be converted to `DG.Tweening.Tween'
     
  15. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Wooops sorry my brain is still burned from the last Ludum Dare *_* When used with targets directly it's DOKill not simply Kill.
    Code (CSharp):
    1. if (fade) {
    2.    spriteRenderer.DOKill();
    3.    DOTween.Sequence()
    4.       .Append(spriteRenderer.DOFade(0, 1))
    5.       .AppendInterval(0.1f)
    6.       .Append(spriteRenderer.DOFade(1, 1));
    7. }
     
  16. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    I had tried that when I found that Kill() didn't work, and I've just tried it again.

    It kicks the same basic error.
     
  17. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Mhmm SpriteRenderer was actually missing operation shortcuts like DOKill/DOPlay/etc. Added them in the version you'll find attached (while I work on the implementation of other missing shortcuts I found).
     

    Attached Files:

  18. cmilr

    cmilr

    Joined:
    Dec 10, 2014
    Posts:
    31
    Wow, thanks so much for taking the time. I donated to your project yesterday, and I'll be sure to pick up the Pro version when it's released.

    Keep up the good work!
     
  19. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Ah it was you then! Many many thanks :) And by the way, this updated version implements operation methods for all missing elements (in case you want to use DOKill with other elements other than SpriteRenderer).
     

    Attached Files:

  20. axxxj

    axxxj

    Joined:
    Nov 18, 2013
    Posts:
    3
    Hi, I have been using DOTween on my latest project and it is really fantastic.

    I am however having a little trouble with DOPunchScale on a 4.6 UI element.
    I'm punching by 0.3 and the objects scale is 1 at the start but when the Punch has finished the scale is 1.163973 or something equally strange.

    I looked into whether another tween is overriding it before the end but it isn't...

    Any guesses to what may be happening?

    Cheers
     
  21. abar

    abar

    Joined:
    Jan 12, 2014
    Posts:
    72
    Awesome, thanks for the superfast turnaround!
     
  22. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @axxxj Glad you like it :) I just tested the Punch and it works perfectly with UI elements and scale here. Can you replicate the issue in a small barebone project and send it to me?
     
  23. toto2003

    toto2003

    Joined:
    Sep 22, 2010
    Posts:
    528
    hi izitmee,
    first of all thanks for that awesome plug in you release, it seem really user friendly and powerfull, as i m still a noob i wonder how to do a specific thing that it s pretty common in game, i d like to display random number from 1 to 10 000 in one second. like in mario or candy crush after you finish a level. what would be the best approach?
     
  24. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Hi @toto2003,

    you really mean random numbers from 1 to 10,000, or just animate a number from 1 to 10,000 progressively? If it's the first, then a tween engine is not the right approach. If it's the second, you can do:
    Code (csharp):
    1. // Tweens from the current value of myFloat to 10,000
    2. // If you want to force it to start from 1 just set myFloat to 1 before creating the tween
    3. DOTween.To(()=> myFloat, x=> myFloat = x, 10000, 1);
    P.S. floats are one of the few properties that can't use shortcuts, so that's why I'm using the generic DOTween way :p
     
  25. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    I come from itween, have not used hotween before. I like to be able to specify the EaseType in one line. It looks like now I have to change the global settings everytime I need to create a tween.
     
  26. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @imtrobin Nono you don't have to do that. There are tons of settings you can chain to a tween (for ease it's SetEase).
     
    imtrobin likes this.
  27. toto2003

    toto2003

    Joined:
    Sep 22, 2010
    Posts:
    528
    awesome will try that!
     
  28. Aslan85

    Aslan85

    Joined:
    Feb 24, 2014
    Posts:
    14
    Hi Daniele,

    I have a probleme with DOTween when I reset a scene a lot of time.

    The game's concept is simple = play/die/replay
    At the begining of the scene, I have a plateform run from left to right of the screen but after 5 replay (5 game over), DOTween stop and the plateform doesn't move.

    I try to add a DOTween.Clear or DOTween.ClearCachedTweens when I push the reset button but it doesn't work.
    My reset button is just an Application.LoadLevel ("myScene")

    Do you have an advice ?

    Best,


    EDIT :
    Ok, don't mind, they had the function. I do DOTween.Kill() before reset my scene and that's work.
    DOTween is awesome !
     
    Last edited: Dec 15, 2014
  29. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @Aslan85 DOTween.Kill is certainly the best way to go, since it also keeps stuff in the cache to reuse. That said, it's weird that Clear was not working for you. I just tested a similar case and it works perfectly here. Were you calling it before calling LoadLevel (which is the correct way to use it in such a case - even if Kill is still better)?
     
  30. Raimis

    Raimis

    Joined:
    Aug 27, 2014
    Posts:
    160
    How difficult it would be to track if certain properties are already tweened? Coming from Flash background with GreenSock lib being the main tweening engine there, it's quite awkward to to look for multiple tweens tweening one property (there it was taken care of). In particular this is especially useful for things like items that auto-appear for certain amount of time on mouse move. Now you need to track the state of the object and be careful with the code. As opposed you could simply run the sequence such as DOFade(1, (1-current_alpha)) -> wait 0.5s -> DOFade(0, (current_alpha)); With DOTween given such sequence is executed on every frame, the fade in and fade out would happen instantly whereas greensock would only leave single tween. I believe it's rather difficult or performance intensive to test such thing, but decided to ask anyway. It would also be nice to have an optional param for Kill method that would allow to instantly finish tween before killing it.
     
  31. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    Greensock (which is absolutely awesome and I love it) can afford an overwrite manager because it uses Reflection, thus forcing users to use strings to define properties. That way an overwrite manager is relatively easy to implement (and I did it with my previous reflection-based tween engine HOTween) but there are two big downsides. One: reflection is slow. Two: defining tweens with strings opens a project to errors that can't be caught during compilation but only during runtime. That's why I preferred to skip over an overwrite manager and make the rest of the engine more productive.

    Try not to think too Greensock-wise and you'll see that there are other easy ways to deal with that (as a note, in order to boost performance I actually never activated Greensock's OverwriteManager, so it's mostly a question of workflow). For example:
    1. you can give a specific ID (a string or an int) to a tween and Kill(myId) before creating the same one
    2. even better, you could store your tween as a Tween/Tweener/Sequence and just reuse it instead of always creating a new one
    Brilliant idea: added to my todo list. As of now you can do a Complete and then a Kill, but I reckon that an optional "complete" parameter inside the Kill itself would be very useful :)
     
  32. Raimis

    Raimis

    Joined:
    Aug 27, 2014
    Posts:
    160
    Thanks, pretty much what I was expecting as an answer :) that's ok, I'll get used to way things work here. Overwritting is handy for really dynamic stuff where many things depend on one another and you just don't want to write your on Update/OnEnterFrame script :).

    Also wanted to clarify one thing. Quite often I use DOTween to add color fade to certain buttons (for guiding users). At the end of "view" I need to reset the color to it's initial state. Obviously saving it elsewhere isn't really nice. Is .Rewind() + .Kill() the best way to do it (mainly used on yoyo tweens)?

    EDIT: Can you please add Graphic.DOColor shortcut? Also was I doing something wrong (didn't have time to debug), or can't you use lambda setters in for loop? If so, how do you start many generic animations of same type with different targets and values all defined in arrays?
     
    Last edited: Dec 16, 2014
  33. Umai

    Umai

    Joined:
    Jun 18, 2013
    Posts:
    74
    Sorry I just still have a hard time grasping the way to use the sequences.

    Code (CSharp):
    1. Debug.Log("Creating sequence");
    2.                         Sequence seq = DOTween.Sequence();
    3.                         seq.AppendInterval(3.0f);
    4.                         seq.AppendCallback(()=>{
    5.                             Debug.Log("sequence step A");
    6.                             this.gameobjectChallengeafterround.SetActive(false);
    7.                         });
    8.                         seq.AppendInterval(0.5f);
    9.                         seq.AppendCallback(()=>{
    10.                             Debug.Log("sequence step B");
    11.                             this.checkCardsWithBacksideUp(NEXTTIME);
    12.                         });
    The code above is expected to do this in sequence:

    1. Wait 3 seconds.
    2. Fire callback block which prints "sequence step A" and calls "this.gameobjectChallengeafterround.SetActive(false);"
    3. Wait half a second.
    4. Call another block printing "sequence step B" and calling "this.checkCardsWithBacksideUp(NEXTTIME);"

    However I suspect the sequence is not started at all. I don't ever see "sequence step A" printed. I'm using DOTween from like last month (0.9.310); that last version (0.9.380) looks like it might be able to fix this - I might have to try it out. Or did I do something wrong so I can fix this?

    Update: Installing 0.9.380 fixed my issue. Many thanks.
     
    Last edited: Dec 16, 2014
  34. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @Umai Empty Sequences (where no tween was added) were not allowed until the last version. Glad I added that in time ;)
     
  35. Dadaze

    Dadaze

    Joined:
    Sep 21, 2012
    Posts:
    24
    Hi there, nice tool! HOTween have been a central piece of many (internal) tools I've developed, it is so convenient! Porting the game to PS4 forces me to change to DOTween and I have a question about transitionning to DOTween.

    Most importantly with DOTween, I Haven't been able to find a way to tween two properties with one tween, it is important for me because I use a system that prevents overlapping of conflicting tweens, tracking individual tweens will be a pain. I think I have a solution, but I wanted to make sure I don't miss a setting or something before getting my hands dirty.
     
  36. gegagome

    gegagome

    Joined:
    Oct 11, 2012
    Posts:
    392

    This is what I have:
    Code (CSharp):
    1.     public IEnumerator BelowGearIconExposer()
    2.     {
    3.         for (int i = 1; i < sceneButtons.Count; i++)
    4.         {
    5.             iconNotExposed = sceneButtons[i - 1].buttonRect.anchoredPosition + v2Value1;
    6.             iconExposed = iconNotExposed + v2Value2;
    7.             DOTween.To(()=> iconNotExposed, x=> sceneButtons[i].buttonRect.anchoredPosition = x, iconExposed, 0.25f);
    8.             yield return new WaitForSeconds(0.25f);
    9.         }
    10.     }
    11.  
    12.     public IEnumerator BelowGearIconUnexposer()
    13.     {
    14.         for (int i = sceneButtons.Count; i > 1; i--)
    15.         {
    16.             iconExposed = sceneButtons[i-1].buttonRect.anchoredPosition;
    17.             iconNotExposed = iconExposed - v2Value2;
    18.             DOTween.To(()=> iconExposed, x=> sceneButtons[i-1].buttonRect.anchoredPosition = x, iconNotExposed, 0.25f);
    19.             yield return new WaitForSeconds(0.25f);
    20.         }
    21.     }
    And it works great, but I have two problems:

    1 - if I set WaitForSeconds argument lower than DOTween.To time argument, the tween won't execute completely. Is this normal? I wish to tween one menu element before the other one completes.

    2 - If I press the trigger event for these methods before they fully execute, the tweens are stopped, so the menu items are stopped, say in the middle, and when the event occurs again weird positioning occurs due to the fact that it is setting a beginning sceneButtons[i-1].buttonRect.anchoredPosition; and if this one has stopped in the middle then the tween occurs from this point, not from the expected ending point.

    Thanks
     
  37. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @DaJuice First of all, I can't say for sure because I didn't test it, but I believe that HOTweenMicro should work on PS4 (unless PS4 completely rejects any form of reflection which would seem weird). That said, nope, there is no way to tween multiple properties in a single tween (at least for now), unless you use a Sequence. I preferred to scrap that option in favor of doing every tween a lot lighter than HOTween ones.

    @gegagome Not normal at all that your tween is interrupted. I suppose there must be something weird happening when you assign icon/Not/Exposed again? Can you try to avoid icon/Not/Exposed as the first tween lambda and instead write:
    Code (csharp):
    1. ()=> sceneButtons[i-1].buttonRect.anchoredPosition
    or the alternate version for iconNotExposed?
     
  38. gegagome

    gegagome

    Joined:
    Oct 11, 2012
    Posts:
    392

    I get the following error:
    Assets/Resources/Scripts/SceneMenu.cs(69,33): error CS1501: No overload for method `To' takes `3' arguments
    When I run this:
    DOTween.To(()=> sceneButtons[i-1].buttonRect.anchoredPosition, iconNotExposed, 0.25f);


    What would be the most efficient way to control the way menu items are exposed, one after another?

    As you suggested the problem may be the assigning of the tween's in and out points every time the tween gets interrupted. I am thinking that I may need to store these in and out points per item menu to avoid this.
     
  39. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @gegagome Sorry I explained myself wrongly. I meant replacing this
    Code (csharp):
    1. DOTween.To(()=> iconNotExposed, x=> sceneButtons[i].buttonRect.anchoredPosition= x, iconExposed, 0.25f);
    with this
    Code (csharp):
    1. DOTween.To(()=> sceneButtons[i -1].buttonRect.anchoredPosition+ v2Value1, x=> sceneButtons[i].buttonRect.anchoredPosition= x, iconExposed, 0.25f);
    And this
    Code (csharp):
    1. DOTween.To(()=> iconExposed, x=> sceneButtons[i-1].buttonRect.anchoredPosition= x, iconNotExposed, 0.25f);
    with this:
    Code (csharp):
    1. DOTween.To(()=> sceneButtons[i-1].buttonRect.anchoredPosition;, x=> sceneButtons[i-1].buttonRect.anchoredPosition= x, iconNotExposed, 0.25f);
     
  40. gegagome

    gegagome

    Joined:
    Oct 11, 2012
    Posts:
    392
    Not sure what's going on... But it doesn't seem that the assignment of the Vector3 variables did much improvement to the tweening with this:
    Code (CSharp):
    1. public IEnumerator BelowGearIconExposer()
    2.     {
    3.         for (int i = 1; i < sceneButtons.Count; i++)
    4.         {
    5.             iconNotExposed = sceneButtons[i - 1].buttonRect.anchoredPosition + v2Value1;
    6.             iconExposed = iconNotExposed + v2Value2;
    7.             DOTween.To(()=> sceneButtons[i -1].buttonRect.anchoredPosition + v2Value1, x=> sceneButtons[i].buttonRect.anchoredPosition= x, sceneButtons[i -1].buttonRect.anchoredPosition + v2Value1 + v2Value2, 0.25f);
    8.             yield return new WaitForSeconds(0.25f);
    9.         }
    10.     }
    11.  
    12.     public IEnumerator BelowGearIconUnexposer()
    13.     {
    14.         for (int i = sceneButtons.Count; i > 1; i--)
    15.         {
    16.             iconExposed = sceneButtons[i-1].buttonRect.anchoredPosition;
    17.             iconNotExposed = iconExposed - v2Value2;
    18.             DOTween.To(()=> sceneButtons[i-1].buttonRect.anchoredPosition, x=> sceneButtons[i-1].buttonRect.anchoredPosition= x, sceneButtons[i-1].buttonRect.anchoredPosition - v2Value2, 0.25f);
    19.             yield return new WaitForSeconds(0.25f);
    20.         }
    21.     }
    When you tap twice the event trigger the last menu item in the BelowGearIconUnexposer() method remains in the scene. Sometime both menu items remain outside of the screen even after tapping twice on the event trigger.

    Thanks
     
  41. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    Reporting, upgrading my project to 4.6.1, dotween generates a Internal compiler error.v 0.9.380
     
  42. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @imtrobin Just updated to Unity 4.6.1 and I have no issues. Can you try to reload and see if it still happens, and if it does can you post the error log?

    @gegagome I'm a little confused by your code, without having the project at hand. Can you replicate it in a small barebone project and send it to me? Also, are you sure anchoredPosition is the best thing to use, instead than sceneButtons[n].transform.localPosition?
     
  43. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    Tried on a new project. It will import fine. Created a empty c# script ,and the error appear.
     
  44. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @imtrobin I just tried that too, and everything works fine once again. I'm very puzzled. Can you write the error log here so I can check it out? Also, a couple other questions:
    1. what OS are you on?
    2. you on Unity free or pro?
    3. do you have other assets or you were using a completely empty project?
    Thanks!
     
  45. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    P.S. also, can you try with this latest version which I still haven't released (though there is nothing there that could cause/solve such issues)?

    EDIT: actually, if you still haven't, it would be even better if your tried the new version I just released :)
     

    Attached Files:

    Last edited: Dec 20, 2014
  46. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    NEW UPDATE 0.9.430
    Also, I optimized various areas of DOTween's website (like having the side menu always present & direct FAQ linking) to make it more usable.

    @Raimis Voilà (about Graphic shortcuts and the optional complete parameter for Kill). Other than that, sorry but I read your EDIT only now. Foreach loops actually have issues due to the old NET version Unity uses, but there's an easy fix here :)
     
    Last edited: Dec 20, 2014
    gjf likes this.
  47. CanisLupus

    CanisLupus

    Joined:
    Jul 29, 2013
    Posts:
    427
    I was looking for an alternative to iTween that did not use strings for parameters, and found the DOTween alpha. From your documentation, it seems very powerful and safe to use, while not overcomplicating things. Congratulations! :)

    I'd just like to ask... why "Parms"? :p (as in "TweenParms") There wasn't an immediate "click" in my brain that "Parms" meant "parameters"/settings (well, there was after a few moments). At first I actually thought it was a typo. Why not "Params"? It's just one more letter (that our IDEs will auto-complete anyway) and I think it's more readable, obvious, and has the correct pronunciation when you say it out loud. (For crazy programmers that talk to themselves when coding. *I may be one of them.*)

    You may have a reason for using "Parms", and yes, I should be giving you actual feedback on the plugin and not on a tiny detail that I guess comes from HOTween. I just felt it was important to mention it before DOTween leaves alpha. Of course, I might be alone on this opinion, and that would be OK. :)
     
    OnePxl likes this.
  48. Seith

    Seith

    Joined:
    Nov 3, 2012
    Posts:
    755
    I believe actually "Parms" is short for "Parmezan", but I could be wrong of course...

    Sorry. On a more serious note I must say that I share your feelings about this. It did surprise me at first and still doesn't quite feel natural to me either. If there were a way to change it to "Params" I wouldn't be opposed to it (if it doesn't require too much work from @Izitmee ). Anyway, as you said it's just a detail and the fact is DOTween is indeed an excellent asset!
     
    CanisLupus and OnePxl like this.
  49. Demigiant

    Demigiant

    Joined:
    Jan 27, 2011
    Posts:
    3,239
    @CanisLupus + @Seith First of all, Seith you totally got it! I actually wanted to call it TweenPecrn (from Pecorino) but I had to roll back to Parmesan to make it more coherent. That said, TweenParms is indeed derived from HOTween's TweenParms, as you mentioned, and I'm sure there was a very good and astounding reason for me using Parms instead than Params, but I can't remember it :D The only good reason I can think of now is that, even if I love auto-completion, I often code with SublimeText and no auto-completion and, considering the position of the R and A key, writing parms is much easier.

    Now, silly excuses apart, it would be a matter of 2 minutes for me to change TweenParms to TweenParams. And you two convinced me I should do it, even if I don't like API changes even in alpha. Soooooo... if anyone is against it speak now or be doomed!!! :D
     
    gjf and CanisLupus like this.
  50. CanisLupus

    CanisLupus

    Joined:
    Jul 29, 2013
    Posts:
    427
    Hahaha, I'm glad it's not just me. :) Cheesy (ha!) jokes aside (you made that one too easy), if someone comes here demanding blood if the change is made, I'll take full responsibility. There should be a full Internet between them and me. ;)