★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
Unity SDK 1.x から 2.0.08_1 に変更したらテクスチャの動的切り替えができなくなった
これまで Unity SDK 1.x (番号は失念..)で setTexture() による動的なテクスチャの差し替えを行っていましたが、先日 SDK を 2.0.08_1 に差し替えたところ、setTexture()によるテクスチャの差し替えが表示に反映されなくなりました。
一度 setTexture() でテクスチャの設定を行うと別のテクスチャへの動的な差し替えは行えないのは仕様でしょうか?
一度 setTexture() でテクスチャの設定を行うと別のテクスチャへの動的な差し替えは行えないのは仕様でしょうか?
0
コメント
どのようなコードを書いているのか教えてもらえますか?
再現コード少々おまちください。
(本来のコードはもっと複雑でこのスペースで説明するのが困難なため処理の要点を抜粋、および処理を簡略化して記述しています)
(あちこち省略しているのでこのままのコードではまともに動作はしないと思いますので、その点はご容赦ください) 上記の Initialize() から呼び出す LoadTexture() でデフォルトのテクスチャをモデルに適用されますが、以降、SetHairColor() を呼び出して テクスチャの差し替えを行っても、モデルの表示に反映されないという現象となっています。
上記動作を確認した Unityのバージョンは 4.6.6p4 です。
このモードならテクスチャが即座に切り替わるようです。
L2D_RENDER_DRAW_MESHモードの場合は、Live2DModelUnity.loadModelをテクスチャ差し替え時に指定すれば切替できました。
SDKのSimpleプロジェクトで髪テクスチャだけ差し替えてみましたが、以下のようなソースになります。
Unity5.0.2p1で確認しましたが4.6.6p4でも問題ないかと思います。
[SimpleModel.cs]
おっしゃるとおり、現在の読み込み済みのモデルを捨てて、再度 Live2DModelUnity.loadModel() でモデルを読み込み直せばテクスチャを設定し直すことできるのは確認できたんですが、やはり以前(SDK 1.x の頃)の挙動に戻してほしいですね...(これが仕様でないのなら)
というのも、SDK 1.x の時点では モーション再生中にモーションを途切れさせずに自然に着せ替えができてたんですが、SDK2.0.08_1 した途端、着せ替えのたびにモーションが初期化されてギクシャクするので、、、ちょっと挙動として微妙なのです。
Unity-iOSの64bitビルド(IL2CPP)に絡んで今更 1.x には戻せないし、RenderModeを変えるとオブジェクトの重ね合わせ等にも問題でるので変えられず...
まあ結論としては、将来この挙動が改善されることを期待しつつ、当面はテクスチャ切り替えるタイミングで、loadModel() でモデルを読み込み直す方法で回避します。
ありがとうございました。