実際にUnityEvents
をScriptable Objectsで使用できないことを認識した後(グローバル変数値を正しく読み取らない)。ダイアログを保存する場所を別のソリューションに移さなければなりませんでした。プレハブにデータを格納するオプション
最高の解決策は、対応するNPCプレハブに保存することでした。これは本当に便利です。しかし、これは私の口に悪い味を残し、それはちょうどこのようなプレハブにデータを格納するために間違って感じる。それは悪い習慣ですか? たとえば、DialogObject
で何かをリファクタリングすると、すべてが失われます。
私はUnityEventsをどこにでも正常に保存できないようです(Jsonとしてシリアル化することはできませんし、Scriptable Objectsはそれらをうまく処理していないようです)私はこれが唯一の解決策であると感じますエディタを使用してダイアログを作成することができます。
ここで最初に確認するのは、このばかですか?別の方法がありますか?
私はこれのList
を保存しようとしています:
[System.Serializable]
public class DialogObject {
public List<PageData> conversations = new List<PageData>();
public UnityEvent postEvent; //Invoked on last page of Dialog
}
ありがとう、病院でPersistentMethodNameを試してみてください。あなたがなぜScriptableオブジェクトでうまくいかないのか説明できますか?実際のUnityEventをScriptableオブジェクトに追加すると、正常に動作します。インスペクタで目的のとおりに編集することができます。しかし、アクセスしようとするすべてのグローバル値(例えば 'public int id = 12')はデフォルト値を返します。 –
デフォルト値またはインスペクタの値を返しますか?スクリプトで指定された値を取得する予定ですか? [リセット]をクリックすると、インスペクタがスクリプト値に戻ります。 – Everts