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.

查看全文
  • 相关阅读:
    python_day11 mysql
    python_day10 多线程 协程 IO模型
    python_day09 多进程 多线程 协程 paramiko模块
    python_day08 接口与归一化设计 多态与多态性 封装 面向对象高级 异常处理 网络编程
    python_day07 常用模块xml/configparser/hashlib/subprocess 面向对象程序设计
    python_day06 匿名函数与内置函数 常用模块
    python_day05 协程函数 面向过程编程 递归和二分法 模块和包的使用 常用模块 开发代码规范
    python_day04 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式
    python_day03 文件处理复习和函数定义调用参数对象
    python_day02 基本数据类型操作,字符编码,文件处理
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10776195.html
  • Copyright © 2011-2022 走看看