新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2022年内を目処に閉鎖する予定です。
閉鎖時期や内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Cubism 4 SDK for Unity R1 でUniTaskが動かなくなる

お世話になっております。

これまで、Cubism 4 SDK for Unity beta2を使用し開発を行っており、
同プロジェクトでUniTask(https://github.com/Cysharp/UniTask)も使用しておりました。

どちらも問題無く使えていたのですが、
CubismSDKをCubism 4 SDK for Unity R1にアップデートしたところ、
UniTaskが動かなくなってしまいました。

現象としては、
特に例外やエラーは出ないのですが、
async関数の中でUniTask.YieldやDelayをawaitした後に処理が戻ってこず止まってしまうというものです。
(こちらはUnityバージョン2019.2.19f1と2019.3.1f1で確認しております。)

詳細な原因はわかっていないのですが、
どうやらCubism 4 SDK for Unity R1の変更でCubismModelに入ったplayerLoopSystem周りの処理が影響していそうです。
試しに以下の箇所をコメントアウトしたところ、UniTaskが正常に動作することを確認いたしました。

File: Live2D\Cubism\Core\CubismModel.cs
378: PlayerLoop.SetPlayerLoop(playerLoopSystem);

UniTask側でもPlayerLoopSystemに手を入れているようなのでそこで競合してしまっているのかと思います。

現状はCubismSDKをアップデートせずbeta2を使用していれば問題ないのですが、
R1にアップデートした上でUniTaskと共存させる方法等ありますでしょうか?

また、今後のアップデートで対応予定はありますでしょうか?

お忙しいところ恐縮ですが、ご確認頂けますと幸いです。

コメント

  • TakahiroSato 様

    お問い合わせ誠にありがとうございます。
    Live2Dスタッフの Tak でございます。

    この度はご不便をおかけしており誠に申し訳ありません。

    CubismSDKをCubism 4 SDK for Unity R1にアップデートしたところ、
    UniTaskが動かなくなる問題についてですが、弊社の方でも既に把握しており、修正に向けて対応を進めております。

    UniTaskと共存させる方法については、Unity 2019.3以降にて GetCurrentPlayerLoop を使用することで
    この現象を回避することができます。
    TakahiroSato 様のご指摘の通り PlayerLoopSystem で競合しているので、
    当該箇所で Unityバージョンによる置き換えをおこなってください。
    Asset/Live2D/Cubism/Core/CubismModel.cs
                var playerLoopSystem =
    #if UNITY_2019_3_OR_NEWER
                    PlayerLoop.GetCurrentPlayerLoop();
    #else
                    PlayerLoop.GetDefaultPlayerLoop();
    #endif
    
    なお、この修正はUnity 2019.3以降の対応となりますので、それ以前のバージョンにつきましては対応不可となりますことを
    予めご了承ください。
    また、この修正は次回のCubism SDK アップデートにて対応する予定です。
    当該現象の対応完了までしばらくお待ちいただくか、上記修正にて対応をお願いいたします。

    ご確認のほど何卒よろしくお願いいたします。
    TakahiroSato
  • Tak 様

    現状での対応方法承知いたしました。
    それでは、Unity 2019.3以降を使用している場合はGetCurrentPlayerLoopで対応し、
    2019.2以前の場合はCubismSDKのbeta2を使用して、CubismSDKのアップデートを待ちたいと思います。

    この度はご確認、ご返信ありがとうございました。
コメントするにはサインインまたは登録して下さい。