void LateUpdate() { if (mLabel == null) { mLabel = GetComponent <UILabel>(); mText = mLabel.font.WrapText(mLabel.text, mLabel.lineWidth / mLabel.cachedTransform.localScale.x, true, true, mLabel.FontSize); } if (mOffset < mText.Length) { if (mNextChar <= Time.time) { charsPerSecond = Mathf.Max(1, charsPerSecond); // Periods and end-of-line characters should pause for a longer time. float delay = 1f / charsPerSecond; char c = mText[mOffset]; if (c == '.' || c == '\n' || c == '!' || c == '?') { delay *= 4f; } mNextChar = Time.time + delay; mLabel.text = mText.Substring(0, ++mOffset); } } else { if ((EventReceiver != null) && (!string.IsNullOrEmpty(CallWhenFinished))) { GameObject go = EventReceiver; if (go == null) { go = gameObject; } LuaMessage msg = new LuaMessage(gameObject, this); go.SendMessage(CallWhenFinished, msg, SendMessageOptions.DontRequireReceiver); } Destroy(this); } }
public void Done() { if (mLabel != null) { mLabel.text = mText; if ((EventReceiver != null) && (!string.IsNullOrEmpty(CallWhenFinished))) { GameObject go = EventReceiver; if (go == null) { go = gameObject; } LuaMessage msg = new LuaMessage(gameObject, this); go.SendMessage(CallWhenFinished, msg, SendMessageOptions.DontRequireReceiver); } Destroy(this); } }
void OnEventWithMessage(LuaMessage message) { lua_behaviour_.CallFunction(message.sender, (string.IsNullOrEmpty(message.functionName) ? "_Event" : "_" + message.functionName), message.parameter); }
/// <summary> /// Update the tweening factor and call the virtual update function. /// </summary> void Update() { float delta = UpdateRealTimeDelta(); //delay play tween animation if (delayTime > 0) { delayTime -= delta; return; } if (mWait) { waitTime -= delta; if (waitTime <= 0) { mFactor = Mathf.Clamp01(mFactor); if (string.IsNullOrEmpty(callWhenFinished)) { enabled = false; } else { // Notify the event listener target GameObject go = eventReceiver; if (go == null) { go = gameObject; } LuaMessage msg = new LuaMessage(isSenderToMessage?gameObject:null, this, "TweenEnd"); go.SendMessage(callWhenFinished, msg, SendMessageOptions.DontRequireReceiver); // Disable this script unless the SendMessage function above changed something if (mFactor == 1f && mAmountPerDelta > 0f || mFactor == 0f && mAmountPerDelta < 0f) { enabled = false; } } } return; } // Advance the sampling factor if (method == Method.Acceler) { mFactor += amountPerDelta * delta * 1.0f / (1.0f - mFactor); } else if (method == Method.Decelerate) { mFactor += amountPerDelta * delta * 1.0f / (1.0f + mFactor * 0.5f); } else { mFactor += amountPerDelta * delta; } // Loop style simply resets the play factor after it exceeds 1. if (style == Style.Loop) { if (mFactor > 1f) { mFactor -= Mathf.Floor(mFactor); } } else if (style == Style.PingPong) { // Ping-pong style reverses the direction if (mFactor > 1f) { mFactor = 1f - (mFactor - Mathf.Floor(mFactor)); mAmountPerDelta = -mAmountPerDelta; } // Modifyed by dc....... // else if (mFactor < 0f) // { // mFactor = -mFactor; // mFactor -= Mathf.Floor(mFactor); // mAmountPerDelta = -mAmountPerDelta; // } } else if (style == Style.PingPongLoop) { // Ping-pong style reverses the direction if (mFactor > 1f) { mFactor = 1f - (mFactor - Mathf.Floor(mFactor)); mAmountPerDelta = -mAmountPerDelta; } else if (mFactor < 0f) { mFactor = -mFactor; mFactor -= Mathf.Floor(mFactor); mAmountPerDelta = -mAmountPerDelta; } } // Calculate the sampling value float val = Mathf.Clamp01(mFactor); if (method == Method.EaseIn) { val = 1f - Mathf.Sin(0.5f * Mathf.PI * (1f - val)); } else if (method == Method.EaseOut) { val = Mathf.Sin(0.5f * Mathf.PI * val); } else if (method == Method.EaseInOut) { const float pi2 = Mathf.PI * 2f; val = val - Mathf.Sin(val * pi2) / pi2; } if (chidrenWidgets != null && chidrenWidgets.Length > 0) { for (int i = 0; i < chidrenWidgets.Length; i++) { chidrenWidgets[i].MarkAsChanged(); } } // Call the virtual update OnUpdate(val); // If the factor goes out of range and this is a one-time tweening operation, disable the script if ((style == Style.Once || style == Style.PingPong) && (mFactor > 1f || mFactor < 0f)) { if (waitTime > 0) { mWait = true; if (string.IsNullOrEmpty(callWhenWait) == false) { GameObject go = eventReceiver; if (go == null) { go = gameObject; } LuaMessage msg = new LuaMessage(isSenderToMessage ? gameObject : null, this, "TweenWait"); go.SendMessage(callWhenWait, msg, SendMessageOptions.DontRequireReceiver); } } else { mFactor = Mathf.Clamp01(mFactor); if (string.IsNullOrEmpty(callWhenFinished)) { enabled = false; } else { // Notify the event listener target GameObject go = eventReceiver; if (go == null) { go = gameObject; } LuaMessage msg = new LuaMessage(isSenderToMessage ? gameObject : null, this, "TweenEnd"); go.SendMessage(callWhenFinished, msg, SendMessageOptions.DontRequireReceiver); // Disable this script unless the SendMessage function above changed something if (mFactor == 1f && mAmountPerDelta > 0f || mFactor == 0f && mAmountPerDelta < 0f) { enabled = false; } } if (mDestroyAfterTween) { GameObject.Destroy(gameObject); } } } }
void MoveEnd(LuaMessage msg) { Debug.Log("Move End"); }