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 TweenParms seqParms = new TweenParms(); if (hasRollover) { seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _rolloutTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _rolloutTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnRollover) { _rolloutTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnRollover) { _rolloutTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _rolloutTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnPress || _tweenScaleOn == ButtonActionType.OnPress) { seqParms = seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _unpressTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _unpressTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnPress) { _unpressTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnPress) { _unpressTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _unpressTween.Complete(); } if (_tweenColorOn == ButtonActionType.OnClick || _tweenScaleOn == ButtonActionType.OnClick) { seqParms = seqParms.Clear() .SetUpdate(true) .SetAutoKill(false); if (hasTextMeshesToTween) { seqParms.OnUpdate(UpdateTextMeshes); } _unclickTween = DOTween.Sequence().SetAs(seqParms) .OnKill(() => _unclickTween = null) .Pause(); if (_tweenScaleOn == ButtonActionType.OnClick) { _unclickTween.Insert(0.15f, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration)); } if (_tweenColorOn == ButtonActionType.OnClick) { _unclickTween.Insert(0.15f, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration)); if (hasChildrenToTween) { foreach (IHOtk2dBase childSprite in childrenSprites) { IHOtk2dBase s = childSprite; _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration)); } } } _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; } } } }