お世話になっております。
Unity2018.4.1
Arbor 3.5.5
SendMessageArgumentのメンバー変数に全タイプのFlexible*系の変数を保持していますが、
これを指定している(実際に使っている)タイプのみ確保するようにできないでしょうか?
結構SendMessageGameObjectを多用していまして、できればメモリ消費が最小になってくれると助かります。
よろしくお願いいたします。
SendMessageArgumentで保持しているFlxible*の変数を使用しているものだけ確保して欲しい
Forum rules
The request period has ended.
The items required for the request are as follows.
要望受付は終了しました。
要望に必要な項目は以下の通りです。
The request period has ended.
The items required for the request are as follows.
- What are you trying to do with Arbor?
- Specifically, where are you inconvenient and in trouble?
- What should I do to improve?
- We can not answer requests that do not know the detailed situation.
- We can not answer your request for specific problems in the specification of your project.
- We can not answer your request on Unity's specification issues.
- We do not guarantee the implementation of your request.
要望受付は終了しました。
要望に必要な項目は以下の通りです。
- Arborを使って何をしようとしているか。
- 具体的にどこが不便で困っているか。
- 改善するにはどうすればよいか。
- 詳しい状況がわからない要望については答えられません。
- ユーザー様のプロジェクトの仕様上の固有の問題に対する要望については答えられません。
- Unityの仕様上の問題に対する要望には答えられません。
- 要望の実装を必ずお約束するものではございません。
- caitsithware
- 管理人
- Posts: 503
- Joined: 2015/08/17 12:41
Re: SendMessageArgumentで保持しているFlxible*の変数を使用しているものだけ確保して欲しい
ご要望ありがとうございます。
理由としては、たとえフィールドの初期値にnullを指定したとしても、Unityのシリアライザが動作したタイミングで自動的にインスタンス化されてしまうからです。
また、フィールドをListなどにすれば容量を最小限に抑えることも可能と言えば可能ですが、配列として使用する予定の無いものをListにするというのも現実的ではないので対応する予定はございません。
ご了承ください。
SendMessageGameObjectとは動作が若干異なりますが、InvokeMethodでは必要なフィールドのみ確保するような構造になっていますので、問題なさそうであればこちらの使用も検討してみてください。
InvokeMethod ― Arbor リファレンス
また、最適化の観点からですと、組み込みスクリプトは汎用性のためにある程度最適化を犠牲にせざるを得ない状況です。
どのようなゲームを作ろうとしているのか、実際にそこは負荷がかかってしまっているのか、などなど状況によってもどういった最適化が必要かは異なっています。
そのため、最終的な最適化に関してそのまま組み込みスクリプトを使用するかスクリプトを自作するかなどについて、最終判断はユーザー様にお任せになってしまう点もご理解下さると助かります。
追記:
Listにすれば可能と説明しましたが、後方互換性のために旧データを新データに流し込む過程で結局旧データを保持し続ける必要があるので、どちらにしても理想的な最適化は実現できそうにないです。
どうしてもSendMessageGameObjectを最適化しなければならない状況でしたら、まずSendMessageGameObjectを多用している状況から改善できないか検討してみてはいかがでしょうか。
この件については、Unityの仕様上簡単には実現できません。
理由としては、たとえフィールドの初期値にnullを指定したとしても、Unityのシリアライザが動作したタイミングで自動的にインスタンス化されてしまうからです。
また、フィールドをListなどにすれば容量を最小限に抑えることも可能と言えば可能ですが、配列として使用する予定の無いものをListにするというのも現実的ではないので対応する予定はございません。
ご了承ください。
SendMessageGameObjectとは動作が若干異なりますが、InvokeMethodでは必要なフィールドのみ確保するような構造になっていますので、問題なさそうであればこちらの使用も検討してみてください。
InvokeMethod ― Arbor リファレンス
また、最適化の観点からですと、組み込みスクリプトは汎用性のためにある程度最適化を犠牲にせざるを得ない状況です。
どのようなゲームを作ろうとしているのか、実際にそこは負荷がかかってしまっているのか、などなど状況によってもどういった最適化が必要かは異なっています。
そのため、最終的な最適化に関してそのまま組み込みスクリプトを使用するかスクリプトを自作するかなどについて、最終判断はユーザー様にお任せになってしまう点もご理解下さると助かります。
追記:
Listにすれば可能と説明しましたが、後方互換性のために旧データを新データに流し込む過程で結局旧データを保持し続ける必要があるので、どちらにしても理想的な最適化は実現できそうにないです。
どうしてもSendMessageGameObjectを最適化しなければならない状況でしたら、まずSendMessageGameObjectを多用している状況から改善できないか検討してみてはいかがでしょうか。
Re: SendMessageArgumentで保持しているFlxible*の変数を使用しているものだけ確保して欲しい
回答ありがとうございます。
使用する引数タイプごとにSendMessageステートを作って対応することにします。
InvokeMethodは表示面積が大きいのでちょっと使いにくいかなと思っています。
(AwakeやEndなど設定しないところは畳めれば良いのですが)
ありがとうございました。
使用する引数タイプごとにSendMessageステートを作って対応することにします。
InvokeMethodは表示面積が大きいのでちょっと使いにくいかなと思っています。
(AwakeやEndなど設定しないところは畳めれば良いのですが)
ありがとうございました。
- caitsithware
- 管理人
- Posts: 503
- Joined: 2015/08/17 12:41
Re: SendMessageArgumentで保持しているFlxible*の変数を使用しているものだけ確保して欲しい
InvokeMethodを使わない理由が表示面積なのですね。
設定しないところを折りたたむようにできないか検討いたします。
設定しないところを折りたたむようにできないか検討いたします。