zoukankan      html  css  js  c++  java
  • UNDERSTANDING ITWEEN CALLBACKS

    One of the most frequent problems I see people have with iTween is with callbacks that don’t fire.

    At it’s core iTween leverages Unity’s SendMessage method for carrying out it’s 3 callbacks: “onStart”, “onUpdate” and “onComplete”. When you add an iTween to a GameObject, iTween will throw all callbacks against the GameObject that is being animated. Where most people have difficulties is when they assign iTweens to GameObjects that don’t physically contain the methods they are attempting to call.

    For example, the following code with never execute the “ShakeComplete” method because the “target” GameObject does not have a script attachted to it containing this method:

    using UnityEngine;
    using System.Collections;
    
    public class UnderstandingCallbacks : MonoBehaviour
    {
    	public GameObject target;
    	
    	void Start ()
    	{
    		iTween.ShakePosition(target, iTween.Hash("x", 1, "onComplete", ShakeComplete));
    	}
    	
    	void ShakeComplete(){
    		Debug.Log("The shake completed!");	
    	}
    }
    

    There’s 2 ways to correct the previous script. The long route: create another script, attach it to our actual “target” GameObject and transfer the “ShakeComplete” method to that new script. The easy route: utilize iTween’s callback “target modifiers”!

    Each of iTween’s 3 callbacks have an additional “target modifier” that can be used to tell iTween to look somewhere else for the callback method: “onStartTarget”, “onUpdateTarget” and “onCompleteTarget”.

    The following corrected script will now fire the “onComplete” callback since we are now using “onCompleteTarget” to tell iTween that the “ShakeComplete” method is located on the GameObject that actually set up the iTween:

    using UnityEngine;
    using System.Collections;
    
    public class UnderstandingCallbacks : MonoBehaviour
    {
    	public GameObject target;
    	
    	void Start ()
    	{
    		iTween.ShakePosition(target, iTween.Hash("x", 1, "onComplete", "ShakeComplete", "onCompleteTarget", gameObject));
    	}
    	
    	void ShakeComplete(){
    		Debug.Log("The shake completed!");	
    	}
    }
    

    I hope this helps clear up unsuccessful callbacks in iTween.

查看全文
  • 相关阅读:
    Linux系统性能优化
    Linux内核模块
    Linux守护进程的启动方法
    已有的游戏如何快速稳定迁移到云上?
    项目重构--使用策略模式
    设计模式学习--装饰者模式(Decorator Pattern)
    C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
    Resharper上手指南
    ReSharper 配置及用法(转)
    使用线程新建WPF窗体(公用进度条窗体)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10776195.html
  • Copyright © 2011-2022 走看看