初始值 n 自定义编辑器

init value n custom Editor

我有这个自定义编辑器:

 [CustomEditor(typeof(Fluid3D), true)]
        public class Fluid3DEditor : Editor
        {
            public override void OnInspectorGUI()
            {
                //this method for create default monoBehavior fields
                //that i make it in base class (Fluid3D)
                DrawDefaultInspector();
                EditorUtility.SetDirty(target);
    
                SerializedProperty zz = serializedObject.FindProperty("Particle Radius");
    
                // Debug.Log(zz.intValue);
                Fluid3D fluid3D = (Fluid3D)target;
    
                switch (fluid3D.initParticleWay)
                {
                    case InitParticleWay.SPHERE:
                        Sphere(ref fluid3D);
    
                        break;
                    case InitParticleWay.CUBE:
                        Cube(ref fluid3D);
                        break;
                }
    
            }
    
            void Sphere(ref Fluid3D fluid3D)
            {
                fluid3D.BallRadius = EditorGUILayout.FloatField("Sphere Radius", fluid3D.BallRadius);
            }
    
            void Cube(ref Fluid3D fluid3D)
            {
                fluid3D.ParticleRadius = EditorGUILayout.FloatField("Particle Radius", fluid3D.ParticleRadius);
                fluid3D.separationFactor = EditorGUILayout.FloatField("Sepreation Factor", fluid3D.separationFactor);
                EditorGUILayout.LabelField("Volume", fluid3D.Volume.ToString());
}

并且classField3D中的初始值为

private float ballRadius = 0.1f; 
public float separationFactor = 1.4f;
private float particleRadius = 0.15f; 

当我在 运行 场景之前从检查器编辑值时 值没有改变,只是在游戏中改变,但我需要在游戏开始前改变。

球半径和粒子半径这两个变量是私有的。序列化它们:

[SerializeField] private float ballRadius = 0.1f; 
[SerializeField] public float separationFactor = 1.4f;
[SerializeField] private float particleRadius = 0.15f;