自定义全局配置(Global Setting)
模板
当然也可以使用框架提供的脚本模板快速创建:
在Project内选一个文件夹,右键菜单点击:Create/VMFramework Script Template/Global Setting
文件夹内出现四个脚本:GameSetting.cs、GameSettingFile.cs、GameSettingFile.Editor.cs、GameSettingFile.GameEditor.cs。
示例
新建GameSetting和GameSettingFile类,就如下面代码所示。
https://github.com/VMware233/VMFramework/blob/main/Assets/Examples/GameLogicArchitecture/GameSetting/GameSetting.cs
using VMFramework.GameLogicArchitecture;
using VMFramework.Procedure;
namespace VMFramework.Examples
{
[ManagerCreationProvider(ManagerType.SettingCore)]
public sealed partial class GameSetting : GlobalSetting<GameSetting, GameSettingFile>
{
public static PlayerGeneralSetting playerGeneralSetting => GlobalSettingFile.playerGeneralSetting;
public static EntityGeneralSetting entityGeneralSetting => GlobalSettingFile.entityGeneralSetting;
}
}
GameSettingFile被拆成了两个文件(其中GameSettingFile.GameEditor.cs文件里的相关内容用来自定义在 游戏编辑器(Game Editor)中的显示:
https://github.com/VMware233/VMFramework/blob/main/Assets/Examples/GameLogicArchitecture/GameSetting/GameSettingFile.cs
using VMFramework.GameLogicArchitecture;
namespace VMFramework.Examples
{
[GlobalSettingFileConfig(FileName = nameof(GameSettingFile))]
public sealed partial class GameSettingFile : GlobalSettingFile
{
public PlayerGeneralSetting playerGeneralSetting;
public EntityGeneralSetting entityGeneralSetting;
}
}
https://github.com/VMware233/VMFramework/blob/main/Assets/Examples/GameLogicArchitecture/GameSetting/GameSettingFile.GameEditor.cs
#if UNITY_EDITOR
using VMFramework.Editor;
using VMFramework.Editor.GameEditor;
using VMFramework.GameLogicArchitecture;
namespace VMFramework.Examples
{
public partial class GameSettingFile : IGameEditorMenuTreeNode
{
string INameOwner.Name => "Game Setting";
}
}
#endif
GlobalSettingFileConfigAttribute
用来自定义此GlobalSettingFile在资源加载时的标识符,以及资源加载器。
默认的资源加载器使用Addressable加载,所以尽量不要放在Assets/Resources文件夹下。
https://github.com/VMware233/VMFramework/blob/main/Assets/VMFramework/Main/GameLogicArchitecture/GlobalSetting/GlobalSettingFileRuntime/GlobalSettingFileConfigAttribute.cs
GlobalSettingFileEditorConfigAttribute
用来自定义此GlobalSettingFile在UnityEditor中的所在资源路径。
示例中的ConfigurationPath.DEFAULT_GLOBAL_SETTINGS_PATH是:
https://github.com/VMware233/VMFramework/blob/main/Assets/VMFramework/Main/GameLogicArchitecture/ConfigurationPath.cs
namespace VMFramework.GameLogicArchitecture
{
public static class ConfigurationPath
{
public const string INTERNAL_RESOURCES_PATH = "VMFramework/GameResources/";
public const string INTERNAL_GLOBAL_SETTINGS_PATH = INTERNAL_RESOURCES_PATH + "GlobalSettings/";
public const string INTERNAL_SCRIPT_TEMPLATES_PATH = INTERNAL_RESOURCES_PATH + "ScriptTemplates/";
public const string DEFAULT_RESOURCES_PATH = "Assets/GameResources";
public const string DEFAULT_CONFIGURATIONS_PATH = DEFAULT_RESOURCES_PATH + "/Configurations";
public const string DEFAULT_GLOBAL_SETTINGS_PATH = DEFAULT_CONFIGURATIONS_PATH + "/GlobalSettings";
public const string DEFAULT_GENERAL_SETTINGS_PATH = DEFAULT_CONFIGURATIONS_PATH + "/GeneralSettings";
public const string DEFAULT_GAME_PREFABS_PATH = DEFAULT_CONFIGURATIONS_PATH + "/GamePrefabs";
}
}
在Game Editor中
做完上面的工作后,已经在 游戏编辑器(Game Editor)中可以看到了:

最后更新于
这有帮助吗?