Open Ruchi12377 opened 3 years ago
コメントありがとうございます!
ランタイム中で値変更を許容するオプションは確かに便利ですね。 機能自体は実現可能だと思います。
単純に思いつくのはエディタ専用の変数を余分に1つ持っておいて、 差し替えるかどうかをフラグで判定する方法ですね。 あとはエディタ拡張でインスペクタの表示をどうにかすれば実現できそうです。
泥臭くやるならこれでできますが、後々の保守を考えると個別でエディタ拡張書くのは大変だなとは思います。 なので、ちょっと別の方法がないか考えてみます。
検討/検証していけそうならアップデートします。
@Ruchi12377
エディタ専用の変数を持たせて、実現してみました。 要望通りの挙動になっているか確認いただければ幸いです。
インスペクタ上のRestore Value
をtrue
に設定すれば、エディタ上でのプレイモード終了時に値が元に戻ります。
対応ありがとうございます! 先程確認してみたのですが、おっしゃるとおりエディタでは希望通りの挙動をするのですが、ランタイム中に同じようなことができるようになりませんでしょうか?
宜しくおねがいします。
@Ruchi12377
対応遅れて申し訳ございません。
ランタイム中の値のリセットをエディタと同様にやるのは厳しいというのが私の中での結論です。 ScriptableObjectの仕様上、MonoBehaviourと同様の挙動を持たせるのは難しいです。
ただ、値をリセットしたいタイミングというのはシーンの切り替え時だったり、 特定のゲームオブジェクトが破棄されたりといったタイミングだと思いましたので、 代替案として以下の機能を実装してみました。
Restore
の追加(スクリプトから値のリセットを呼び出す)Restore Value On Scene Changed
の追加(true
にするとシーン変更時にRestore
を呼び出す)RestoreOnGameObejctDestroyed
の追加(指定したゲームオブジェクトが破棄される時にRestore
を呼び出す)プレリリース版として以下のリンクからダウンロードできますので、 ご確認いただけますと幸いです。
お目当てのものとは異なるものかもしれません。 ご期待に沿えず申し訳ございません。
対応が遅れたことも合わせて、再度お詫び申し上げます。
SilCilSystemについてです。 SilCilSystemのVariableHoge実装がScriptableObjectになっているのが最大の特徴だと思います。 ですが、ScriptableObject上で保存されてる値はランタイム中に変更したとしても、Monobehaviourでシリアライズしたフィールドの値のようにはもとに戻りません。 スコアなどの最初はかならず0になったりするものなどには問題ありませんが、毎回インスペクタで設定した値にしたいということができないです(やろうと思えばできる)。 そこで、VaruableHogeの値が再生中に変更した場合にもとに戻す機能を追加することは可能でしょうか? (できれば値を保持するかどうかのフラグなども用意してほしいです)