main BBS › フォーラム › システム・仕様系Q&A › EmotePlayer削除時の処理について
- このトピックには6件の返信、2人の参加者があり、最後ににより2年、 8ヶ月前に更新されました。
-
投稿者投稿
-
ysalphaゲスト
EmotePlayer削除時の処理について質問です。
GenerateTestシーンを参考に、EmotePlayer.LoadData()を呼び出してセットアップを行っているのですが、キャラ削除時(EmotePlayerを使わなくなったタイミング)に、
SDKマニュアルに載っている
// E-moteデータをアンロードします
public void UnloaData();
というメソッドは呼び出す必要があるのでしょうか?EmotePlayer.UnloadData()自体呼び出すことができない(公開されていない?)ようにも見えますし、
GenerateTestシーンではEmotePlayerのUnload関係の処理は特に行われていないようなので、
必要ないとは思っています。ちなみに、デバイスリソースの確保のための
EmoteDeviceManager.Loadの呼び出しは負荷が高く出来る限りコール頻度を下げたいので、
ゲーム初期化時にLoadを1回、
ゲーム終了時にUnloadを1回、
呼び出すことを想定しています。ysalphaゲスト開発環境は
Windows10 64bit
E-mote3.9.5(Unity TYPE2 SDK)
Unity 2018.2.3f1 (64-bit)
です。emote_ofcキーマスターE-moteオフィシャルです!
ご質問をいただきありがとうございます。ソースをチェックいたしましたところ、Unity TYPE2 SDKにおいてEmotePlayer.UnloadData()関数の実装漏れがありました。
正しくは以下のような内容で実装されている想定でした。
次期バージョンアップで対応します。public void UnloadData() {
DestroyCore();
}なお、この関数は「EmotePlayerのインタンスを維持したままモデルのリソースを破棄する」目的で呼び出すものであり、EmotePlayerのインスタンス自体を破棄するのであれば、その際に明示的に呼び出す必要はありません。
EmoteDevicManager.Load(), Unload() の呼び出し方は、そちらの使い方で合っております。
今後とも、E-moteをよろしくお願いいたします。
ysalphaゲストEmotePlayer.UnloadDataメソッドについて承知しました。
ただ、今やりたいこととしては、
GameObjectやアタッチされたEmotePlayerスクリプトは破棄せずに、
GameObject、EmotePlayerスクリプトを使いまわして、
1つのインスタンス内で、キャラを表示/非表示させたり、
同一EmotePlayerで別キャラを表示するようにしたい。
というものです。使いまわす理由は、InstantiateやAddComponent/DelComponentにかかる負荷を極力除外したいためです。
そこでゲーム開始時に、同時に表示される可能性のあるキャラ数分のEmotePlayerがアタッチされた
GameObjectをあらかじめ確保してしまい、
その中で表示非表示(LoadData/UnloadData)をやりくりすることで実現できるかと思い、
EmotePlayer.UnloadDataの使用に思い至りました。上記の意図でEmotePlayer.UnloadDataを使うのは望ましくないでしょうか?
素直にGameObjectのDestroy、もしくはEmotePlayerのAddComponent/DelComponentを使って、
構築した方がよろしいでしょうか?emote_ofcキーマスターE-moteオフィシャルです!
その使用目的であれば、UnloadData() を使用するのが適しています。
前回の回答でお応えした UnloadData() の実装を EmotePlayer.cs に追加してください。
正式なSDKには次回バージョンアップで追加となります。よろしくお願いいたします!
ysalphaゲスト承知しました。
EmotePlayer.csに
public void UnloadData() {
DestroyCore();
}を仮で実装しておき、次回SDKでの正式対応をお待ちしております。
ご対応ありがとうございました! -
投稿者投稿