private void Update() { // check if effect? if (!mTriggerAction) { return; } mInvicibleTimer += Time.deltaTime; // do flash algorithm. DoFlash(); // check if the time reach? if (mInvicibleTime > mInvicibleTimer) { return; } mLiveObject.CanDamage = true; // set back the local color to record color. if (mOrderLayerObject.GetSpriteRenderer() != null) { mOrderLayerObject.GetSpriteRenderer().color = mRecordColor; } for (int index = 0; index < mOrderLayerObject.SpriteRenderers().Count; ++index) { /* * No need to check null, this will always be there. * Because 'JCS_OrderLayerObject' will be remove the * empty slot before we use it. */ mOrderLayerObject.SpriteRenderersAt(index).color = mRecordColor; } // reset timer. mInvicibleTimer = 0.0f; this.mFlashToggle = false; // cancel action mTriggerAction = false; }