初始值 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;
我有这个自定义编辑器:
[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;