自定义全局配置(Global Setting)

模板

当然也可以使用框架提供的脚本模板快速创建:

  1. 在Project内选一个文件夹,右键菜单点击:Create/VMFramework Script Template/Global Setting

  2. 文件夹内出现四个脚本:GameSetting.cs、GameSettingFile.cs、GameSettingFile.Editor.cs、GameSettingFile.GameEditor.cs。

示例

新建GameSetting和GameSettingFile类,就如下面代码所示。

​​其中的PlayerGeneralSetting是在 自定义通用配置文件(General Setting)中的示例;EntityGeneralSetting是在 GamePrefab中的示例;这些可以先不管。

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)中可以看到了:

最后更新于

这有帮助吗?