Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка при использование DoTWeen в Unity

Межголоктический разум Ученик (241), на голосовании 2 недели назад
У меня есть скрипт который делает анимации окна и его элементов с помощью DoTween. Но в консоле не понятная мне ошибка:

UnityException: get_isPlaying is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'FadePanel' on game object 'Button (Legacy)'. See "Script Serialization" page in the Unity Manual for further details. DG.Tweening.DOTween.InitCheck () (at D:/DG/_Develop/__UNITY_ASSETS/_Demigiant/__DOTween/_DOTween.Assembly/DOTween/DOTween.cs:1128) DG.Tweening.DOTween.Sequence () (at D:/DG/_Develop/__UNITY_ASSETS/_Demigiant/__DOTween/_DOTween.Assembly/DOTween/DOTween.cs:732) FadePanel..ctor () (at Assets/Assets1/scripts/FadePanel.cs:21)

---------------->


Сам скрипт:
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;


public class FadePanel : MonoBehaviour
{
public CanvasGroup alfaGroup;
public RectTransform BuyPanel;
private RectTransform shopButt;
Vector2 TargetPos;
Vector2 StartPos;
Vector2 targBut;

public List<RectTransform> tranf = new List<RectTransform>();

private bool isOpen = false;

Sequence anim = DOTween.Sequence();

private void Awake()
{
TargetPos = BuyPanel.transform.position;
StartPos = new Vector2(-Screen.width / 2, StartPos.x);

targBut = new Vector2(90, 177);
}

private void OnMouseDown()
{
if (!isOpen)
{
isOpen = true;

anim
.Append(BuyPanel.DOAnchorPos(TargetPos, 1f).From(StartPos))
.Join(alfaGroup.DOFade(1, 1f).From(0))
.Join(shopButt.DOAnchorPos(targBut, 1f).From(shopButt.position));

IconsUp();
}
else
{
anim
.Append(alfaGroup.DOFade(0, 1f).From(1))
.Join(shopButt.DOAnchorPos(shopButt.position, 1f).From(targBut));
}
}

private void IconsUp()
{
for (int i = 0; i < tranf.Count; i++)
{
anim
.Append(tranf[i].DOScale(1, 0.5f).From(0));
}
}

}

*скрипт установлен на кнопке, который тоже отодвигается при появлении окна
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (458564) 1 месяц назад
А что конкретно непонятно-то? По-моему, там все совершенно ясно английским по черному написано.
Дело в том, что сия прекрасная библиотека не позволяет лепить код как попало. В ней каким-то боком влеплено чисто жабоскриптовское правило "делай так, только так, и никак иначе, потому что иначе не будет работать", только в отличие от жабоскрипта, тут попытки спороть отсебятину отсекаются еще на этапе компиляции. Вот, одно из таких правил ты и нарушил, а что там и почему - скажет документация.
Межголоктический разумУченик (241) 1 месяц назад
оказалось надо определять "Sequence anim" внутри каждой функции отдельно. А не сразу в самом начале как у меня
Похожие вопросы