mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 02:36:14 +00:00
提交GAS 打算做一个帧同步的GAS
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
// #if UNITY_EDITOR
|
||||
// namespace GAS.Editor
|
||||
// {
|
||||
// using System.Collections.Generic;
|
||||
// using System.Linq;
|
||||
// using GAS.Runtime;
|
||||
// using UnityEditor;
|
||||
// using UnityEngine;
|
||||
//
|
||||
// [CustomEditor(typeof(AttributeBasedModCalculation))]
|
||||
// public class AttributeBasedModCalculationEditor : UnityEditor.Editor
|
||||
// {
|
||||
// private static List<string> _attributeOptions;
|
||||
// private AttributeBasedModCalculation Asset => (AttributeBasedModCalculation)target;
|
||||
//
|
||||
// private static List<string> AttributeOptions
|
||||
// {
|
||||
// get
|
||||
// {
|
||||
// if (_attributeOptions == null)
|
||||
// {
|
||||
// _attributeOptions = new List<string>();
|
||||
// var asset = AttributeSetAsset.LoadOrCreate();
|
||||
// foreach (var attributeSetConfig in asset.AttributeSetConfigs)
|
||||
// {
|
||||
// var config = attributeSetConfig;
|
||||
// foreach (var fullName in attributeSetConfig.AttributeNames.Select(shortName =>
|
||||
// $"AS_{config.Name}.{shortName}"))
|
||||
// _attributeOptions.Add(fullName);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return _attributeOptions;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void OnValidate()
|
||||
// {
|
||||
// Save();
|
||||
// }
|
||||
//
|
||||
// public override void OnInspectorGUI()
|
||||
// {
|
||||
// EditorGUI.BeginChangeCheck();
|
||||
//
|
||||
// EditorGUILayout.BeginVertical(GUI.skin.box);
|
||||
//
|
||||
// EditorGUILayout.HelpBox(
|
||||
// "AttributeBasedModCalculation:基于属性的计算\n该类型是根据属性值计算Modifier模值的,计算公式为:AttributeValue * k + b 计算逻辑与ScalableFloatModCalculation一致。\n重点在于属性值的来源: 从谁身上(Attribute From)以什么方式(Capture Type)捕获哪个属性的值(Attribute Name)。",
|
||||
// MessageType.Info);
|
||||
//
|
||||
// GUILayout.Space(20);
|
||||
// EditorGUILayout.HelpBox("[从谁身上] Source: [游戏效果]的来源(创建者); Target: [游戏效果]的目标(拥有者)。", MessageType.None);
|
||||
// EditorGUILayout.BeginHorizontal();
|
||||
// EditorGUILayout.LabelField("Attribute From:", GUILayout.Width(100));
|
||||
// Asset.attributeFromType =
|
||||
// (AttributeBasedModCalculation.AttributeFrom)EditorGUILayout.EnumPopup(Asset.attributeFromType);
|
||||
// EditorGUILayout.EndHorizontal();
|
||||
//
|
||||
// GUILayout.Space(20);
|
||||
// EditorGUILayout.HelpBox("[以什么捕获方式] Track: 追踪(实时); SnapShot: 快照,在[游戏效果]被创建时会对来源和目标的属性进行快照。", MessageType.None);
|
||||
// EditorGUILayout.BeginHorizontal();
|
||||
// EditorGUILayout.LabelField("Capture Type:", GUILayout.Width(100));
|
||||
// Asset.captureType =
|
||||
// (AttributeBasedModCalculation.GEAttributeCaptureType)EditorGUILayout.EnumPopup(Asset.captureType);
|
||||
// EditorGUILayout.EndHorizontal();
|
||||
//
|
||||
// GUILayout.Space(20);
|
||||
//
|
||||
// EditorGUILayout.HelpBox("[捕获哪个属性的值]", MessageType.None);
|
||||
// EditorGUILayout.BeginHorizontal();
|
||||
// EditorGUILayout.LabelField("Attribute Name:", GUILayout.Width(100));
|
||||
// var indexOfTag = AttributeOptions.IndexOf(Asset.attributeName);
|
||||
// var idx = EditorGUILayout.Popup("", indexOfTag, AttributeOptions.ToArray());
|
||||
// idx = Mathf.Clamp(idx, 0, AttributeOptions.Count - 1);
|
||||
// Asset.attributeName = AttributeOptions[idx];
|
||||
// if (!string.IsNullOrEmpty(Asset.attributeName))
|
||||
// {
|
||||
// var split = Asset.attributeName.Split('.');
|
||||
// Asset.attributeSetName = split[0];
|
||||
// Asset.attributeShortName = split[1];
|
||||
// }
|
||||
//
|
||||
// EditorGUILayout.EndHorizontal();
|
||||
//
|
||||
// GUILayout.Space(20);
|
||||
// EditorGUILayout.BeginHorizontal();
|
||||
// EditorGUILayout.LabelField("K:", GUILayout.Width(30));
|
||||
// Asset.k = EditorGUILayout.FloatField(Asset.k, GUILayout.Width(70));
|
||||
// EditorGUILayout.EndHorizontal();
|
||||
//
|
||||
// EditorGUILayout.BeginHorizontal();
|
||||
// EditorGUILayout.LabelField("B:", GUILayout.Width(30));
|
||||
// Asset.b = EditorGUILayout.FloatField(Asset.b, GUILayout.Width(70));
|
||||
// EditorGUILayout.EndHorizontal();
|
||||
//
|
||||
// EditorGUILayout.EndVertical();
|
||||
//
|
||||
// if (EditorGUI.EndChangeCheck())
|
||||
// {
|
||||
// Save();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void Save()
|
||||
// {
|
||||
// EditorUtility.SetDirty(Asset);
|
||||
// AssetDatabase.SaveAssets();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// #endif
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2a05b45b4cf84993b8b66dc1bd6175b9
|
||||
timeCreated: 1703756269
|
91
JEX_GAS/Assets/GAS/Editor/Effect/ModifierConfigEditor.cs
Normal file
91
JEX_GAS/Assets/GAS/Editor/Effect/ModifierConfigEditor.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
#if UNITY_EDITOR
|
||||
namespace GAS.Editor
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Editor;
|
||||
using Runtime;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
public class ModifierConfigEditor : EditorWindow
|
||||
{
|
||||
private List<string> _attributeOptions;
|
||||
|
||||
private Action<GameplayEffectModifier> _callback;
|
||||
private GameplayEffectModifier _sourceModifier;
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
EditorGUILayout.BeginVertical(GUI.skin.box);
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("Attribute Name:", GUILayout.Width(100));
|
||||
var indexOfTag = _attributeOptions.IndexOf(_sourceModifier.AttributeName);
|
||||
var idx = EditorGUILayout.Popup("", indexOfTag, _attributeOptions.ToArray());
|
||||
idx = Mathf.Clamp(idx, 0, _attributeOptions.Count - 1);
|
||||
_sourceModifier.AttributeName = _attributeOptions[idx];
|
||||
var nameSplit = _sourceModifier.AttributeName.Split('.');
|
||||
_sourceModifier.AttributeSetName = nameSplit[0];
|
||||
_sourceModifier.AttributeShortName = nameSplit[1];
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("Operation:", GUILayout.Width(100));
|
||||
_sourceModifier.Operation = (GEOperation)EditorGUILayout.EnumPopup("", _sourceModifier.Operation);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("Value:", GUILayout.Width(100));
|
||||
_sourceModifier.ModiferMagnitude = EditorGUILayout.FloatField("", _sourceModifier.ModiferMagnitude);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.BeginVertical();
|
||||
EditorGUILayout.LabelField("Modifier Magnitude Calculation:", GUILayout.Width(200));
|
||||
_sourceModifier.MMC = (ModifierMagnitudeCalculation)EditorGUILayout.ObjectField("", _sourceModifier.MMC,
|
||||
typeof(ModifierMagnitudeCalculation), false);
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
if (_sourceModifier.MMC != null)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(GUI.skin.box);
|
||||
EditorGUILayout.LabelField("MMC Info:");
|
||||
var editor = UnityEditor.Editor.CreateEditor(_sourceModifier.MMC);
|
||||
editor.OnInspectorGUI();
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
if (GUILayout.Button("Save")) Save();
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
public static void OpenWindow(GameplayEffectModifier sourceModifier, Action<GameplayEffectModifier> callback)
|
||||
{
|
||||
var window = GetWindow<ModifierConfigEditor>();
|
||||
window.Init(sourceModifier, callback);
|
||||
window.Show();
|
||||
}
|
||||
|
||||
private void Init(GameplayEffectModifier sourceModifier, Action<GameplayEffectModifier> callback)
|
||||
{
|
||||
_attributeOptions = AttributeEditorUtil.GetAttributeNameChoices();
|
||||
_sourceModifier = sourceModifier;
|
||||
_callback = callback;
|
||||
}
|
||||
|
||||
private void Save()
|
||||
{
|
||||
_callback?.Invoke(_sourceModifier);
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 474ac93f3419447199e24b7964eb48b5
|
||||
timeCreated: 1703747265
|
Reference in New Issue
Block a user