void Start() { _initialized = true; _isRadioButton = _toggleGroupid != ""; List<IHOtk2dBase> childrenSprites = null; bool hasChildrenToTween = false; bool hasTextMeshesToTween = false; if (_tweenChildren && _tweenColorOn != ButtonActionType.None) { Component[] children = gameObject.GetComponentsInChildren(typeof(IHOtk2dBase)); childrenSprites = new List<IHOtk2dBase>(); foreach (Component child in children) { if (child == sprite) continue; childrenSprites.Add(child as IHOtk2dBase); IHOtk2dTextMesh txtMesh = child as IHOtk2dTextMesh; if (txtMesh != null) _txtMeshesToUpdate.Add(txtMesh); } hasChildrenToTween = childrenSprites.Count > 0; hasTextMeshesToTween = _txtMeshesToUpdate.Count > 0; } // Hide eventual tooltip if (_tooltip != null) { _tooltip.SetActive(false); _showTooltip = true; } // Create tweens if (hasRollover) { _rolloutTween = DOTween.Sequence().SetUpdate(true).SetAutoKill(false) .OnKill(() =>_rolloutTween = null) .Pause(); if (hasTextMeshesToTween) _rolloutTween.OnUpdate(UpdateTextMeshes); if (_tweenScaleOn == ButtonActionType.OnRollover) _rolloutTween.Insert(0, trans.DOScale(trans.localScale * _tweenScaleMultiplier, _TweenDuration).From()); if (_tweenColorOn == ButtonActionType.OnRollover) { _rolloutTween.Insert(0, DOTween.To(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration).From()); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.To(() => s.color, x => s.color = x, _tweenColor, _TweenDuration).From()); } } } _rolloutTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnPress || _tweenScaleOn == ButtonActionType.OnPress) { _unpressTween = DOTween.Sequence().SetUpdate(true).SetAutoKill(false) .OnKill(() => _unpressTween = null) .Pause(); if (hasTextMeshesToTween) _unpressTween.OnUpdate(UpdateTextMeshes); if (_tweenScaleOn == ButtonActionType.OnPress) _unpressTween.Insert(0, trans.DOScale(trans.localScale * _tweenScaleMultiplier, _TweenDuration).From()); if (_tweenColorOn == ButtonActionType.OnPress) { _unpressTween.Insert(0, DOTween.To(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration).From()); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.To(() => s.color, x => s.color = x, _tweenColor, _TweenDuration).From()); } } } _unpressTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnClick || _tweenScaleOn == ButtonActionType.OnClick) { _unclickTween = DOTween.Sequence().SetUpdate(true).SetAutoKill(false) .OnKill(() => _unclickTween = null) .Pause(); if (hasTextMeshesToTween) _unclickTween.OnUpdate(UpdateTextMeshes); if (_tweenScaleOn == ButtonActionType.OnClick) _unclickTween.Insert(0.15f, trans.DOScale(trans.localScale * _tweenScaleMultiplier, _TweenDuration).From()); if (_tweenColorOn == ButtonActionType.OnClick) { _unclickTween.Insert(0.15f, DOTween.To(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration).From()); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.To(() => s.color, x => s.color = x, _tweenColor, _TweenDuration).From()); } } } _unclickTween.Complete(); } // Execute eventual cued actions if (_preinitActionsQueue != null) { foreach (PreinitActionType visualActionType in _preinitActionsQueue) { switch (visualActionType) { case PreinitActionType.ToggleOn: ToggleOn(); break; case PreinitActionType.ToggleOnWithoutEventDispatching: ToggleOn(false); break; case PreinitActionType.ToggleOff: ToggleOff(); break; case PreinitActionType.ToggleOffWithoutEventDispatching: ToggleOff(false); break; } } } }