using UnityEngine; #if UNITY_EDITOR using System; using System.IO; using UnityEditor; #endif public class SoCameraSFX : ScriptableObject { public float zoomScale; public float zoomTime; //public float zoomDuration; //public float zoomRecoverTime; public Vector3 direction; public float power; public float interval; public float duration; } #if UNITY_EDITOR [CustomEditor(typeof(SoCameraSFX))] public class SoCameraSFXEditor : Editor { [MenuItem("程序/角色相关/技能配置/摄像机控制")] static void CreateSoCameraSFX() { SoCameraSFX _config = CreateInstance(); string _createName = string.Format(ScriptableObjectLoader.SoCameraSFX_Suffix, DateTime.UtcNow.ToFileTimeUtc()); string _path = ResourcesPath.ResourcesOutPath + "refdata/ScriptableObject/SoCameraSFX/"; if (Directory.Exists(_path) == false) { Directory.CreateDirectory(_path); } _path = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath, "refdata/ScriptableObject/SoCameraSFX/", _createName, ".asset"); AssetDatabase.CreateAsset(_config, _path); AssetDatabase.Refresh(); ProjectWindowUtil.ShowCreatedAsset(_config); } public override void OnInspectorGUI() { serializedObject.Update(); SoCameraSFX _target = target as SoCameraSFX; _target.zoomScale = EditorGUILayout.FloatField("缩放系数", _target.zoomScale); _target.zoomTime = EditorGUILayout.FloatField("缩放时间", _target.zoomTime); //_target.zoomDuration = EditorGUILayout.FloatField("缩放保持时间", _target.zoomDuration); //_target.zoomRecoverTime = EditorGUILayout.FloatField("缩放恢复时间", _target.zoomRecoverTime); GUILayout.Space(10); _target.direction = EditorGUILayout.Vector3Field("震动方向", _target.direction); _target.power = EditorGUILayout.FloatField("震动力度", _target.power); _target.interval = EditorGUILayout.FloatField("震动间隔", _target.interval); _target.duration = EditorGUILayout.FloatField("震动持续时间", _target.duration); if (GUI.changed) { EditorUtility.SetDirty(target); serializedObject.ApplyModifiedProperties(); } } } #endif