Tween使用時

23 views
Skip to first unread message

スーヘラ

unread,
Jun 24, 2024, 9:45:05 PMJun 24
to 宴ユーザーグループ
・宴のバージョン:3.11.4
・Unityのバージョン:2020.3.15.f2
・OSバージョン:Windows10

 キャラ表示後に
Tween キャラ名 MoveBy  time=2 y=-500
と入力した際にエラーが表示され進行不能になるのですが、解決方法はありますでしょうか?
(補足 画面上にて指定したキャラが途中まで動いてから進行不能になります)
NullReferenceException: Object reference not set to an instance of an object
iTween.CleanArgs (System.Collections.Hashtable args) (at Assets/Utage/Scripts/GameLib/iTween/Plugins/iTween.cs:6808)
iTween.MoveBy (UnityEngine.GameObject target, System.Collections.Hashtable args) (at Assets/Utage/Scripts/GameLib/iTween/Plugins/iTween.cs:1843)
Utage.AdvITweenPlayer.PlaySub () (at Assets/Utage/Scripts/ADV/Effect/AdvITweenPlayer.cs:208)
Utage.AdvITweenPlayer.Play () (at Assets/Utage/Scripts/ADV/Effect/AdvITweenPlayer.cs:153)
Utage.AdvCommandTween.OnStartEffect (UnityEngine.GameObject target, Utage.AdvEngine engine, Utage.AdvScenarioThread thread) (at Assets/Utage/Scripts/ADV/Command/Wait/Effect/AdvCommandTween.cs:92)
Utage.AdvCommandEffectBase.OnStart (Utage.AdvEngine engine, Utage.AdvScenarioThread thread) (at Assets/Utage/Scripts/ADV/Command/Wait/Effect/AdvCommandEffectBase.cs:86)
Utage.AdvCommandWaitBase.DoCommand (Utage.AdvEngine engine) (at Assets/Utage/Scripts/ADV/Command/Wait/AdvCommandWaitBase.cs:24)
Utage.AdvScenarioThread+<CoStartPage>d__64.MoveNext () (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:348)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <cfc1ad890650411e946cff2e6f276711>:0)

マッドネスラボ

unread,
Jun 24, 2024, 10:36:20 PMJun 24
to 宴ユーザーグループ
ソースコードを見る限りは、エラー自体はTwennコマンドを実行した直後にエラーログがでています。

>NullReferenceException: Object reference not set to an instance of an object
>iTween.CleanArgs (System.Collections.Hashtable args) (at Assets/Utage/Scripts/GameLib/iTween/Plugins/iTween.cs:6808)
このエラー自体は、Tweenのパラメーター指定(Arg3)のスペルミス等をすると起きやすいエラーです。

>time=2 y=-500
というのは合っていますが、ここの前後で記述ミスTweenをしているものがないかチェックしてみてください。


2024年6月25日火曜日 10:45:05 UTC+9 takumi...@gmail.com:

マッドネスラボ

unread,
Jun 24, 2024, 10:59:17 PMJun 24
to 宴ユーザーグループ
Assets/Utage/Scripts/GameLib/iTween/iTweenData.cs の 175行目ParseParametersを
以下のように修正すると、シナリオインポート時にエラーが出るようになると思いますので、チェックがしやすくなると思います。


void ParseParameters(string type, string arg)
{
try
{
this.type = (iTweenType)System.Enum.Parse(typeof(iTweenType), type);
if (this.type == iTweenType.Stop)
{
return;
}
else
{
char[] separator = { ' ', '=' };
string[] args = arg.Split(separator, System.StringSplitOptions.RemoveEmptyEntries);
if (args.Length % 2 != 0 || args.Length <= 0)
{
AddErrorMsg(arg + "内が、「パラメーター名=値」 の形式で書かれていません。");
}
else
{
for (int i = 0; i < args.Length / 2; ++i)
{
string name = args[i * 2];

//以下修正箇所
// HashObjects.Add(name, ParseValue(this.type, name, args[i * 2 + 1], ref isDynamic));

var obj = ParseValue(this.type, name, args[i * 2 + 1], ref isDynamic);
if (obj == null)
{
//nullの場合は解析失敗
AddErrorMsg($"{name}={args[i * 2 + 1]} はTweenとして解析できません。");
}
HashObjects.Add(name, obj);
}
}
}
}
catch (System.Exception e)
{
AddErrorMsg(arg + "内が、「パラメーター名=値」 の形式で書かれていません。");
AddErrorMsg(e.Message);
}
}


ソースコードが古いので、修正パッケージを作るのではなく、直接ソースコードの修正箇所をお伝えします。
HashObjects.Add(name, ParseValue(this.type, name, args[i * 2 + 1], ref isDynamic));
の部分が問題で、ここで解析が失敗している場合に、実行時エラーがでてしまいます。
nullチェックをして、エラーメッセージが出るように修正してみてください。

2024年6月25日火曜日 11:36:20 UTC+9 マッドネスラボ:

スーヘラ

unread,
Jun 25, 2024, 9:44:45 PMJun 25
to 宴ユーザーグループ
無事に解決できました。

2024年6月25日火曜日 11:59:17 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages