Hinweise zur Verwendung des GameFrameWork-Frameworks (Unity3D) (1) Eintrag

Inhaltsverzeichnis

Inhaltsverzeichnis

Vorwort: 

1. Erstellen Sie ein Projekt und stellen Sie das Framework vor

2. Spieleingang


Vorwort: 

        Ich habe vor langer Zeit von diesem Framework gehört ( Game Framework | Game Framework based on the Unity engine ), die offiziellen Dokumente und ein kleines Tutorial gelesen (nur nicht ändern) und viele Video-Tutorials, Blogs, usw. Aber die meisten von ihnen hören nur bei der Codeanalyse auf, und es gibt nur wenige detaillierte praktische Übungen. So passiert es oft, dass ich nach dem Lesen merke, dass ich es zu verstehen scheine, wenn ich es lese, aber ich bin ratlos, wenn ich anfange, es zu benutzen.

        Also beschloss ich, das Lernen durch Übung zu fördern, und begann, ein einfaches und relativ vollständiges Projekt mit dem GameFrameWork-Framework zu implementieren, und zeichnete den Prozess auf.

Der Hauptinhalt dieser Übung besteht darin, das Framework auf ein Spiel „Ruying“ anzuwenden         , das von unserem Team erstellt wurde (Unity-Version: 2021.3.1f1c1). Die Hauptreferenz für den gesamten Prozess ist der offizielle Fall "StarForce" ( GitHub - EllanJiang/StarForce: Dies ist eine Demo, die mit Game Framework erstellt wurde. ) Die Probleme, die in der Mitte aufgetreten sind, werde ich lösen, indem ich den Quellcode lese, verschiedene Dokumente abfrage und Tutorien usw. . Bitte weisen Sie aufgrund eingeschränkter persönlicher Fähigkeiten auf eventuelle Fehler hin.

Also, das Spiel beginnt!


1. Erstellen Sie ein Projekt und stellen Sie das Framework vor

        Dieser Teil ist sehr einfach und es gibt detaillierte Pläne auf der offiziellen Website und verschiedene Tutorials. Einfach hier eintragen.

        Laden Sie zuerst das neueste Framework-Plugin auf der offiziellen Website herunter: 

 Erstellen Sie ein Projekt, erstellen Sie einen Ordner GameMain, um Spielinhalte zu installieren, und ziehen Sie dann das heruntergeladene Framework hinein:

An diesem Punkt ist das Spiel-Framework problemlos installiert:

 Führen Sie den Test des Beispielszenarios aus:

Kein Problem:


2. Spieleingang

Nachdem das Framework installiert ist, erstellt es den Spieleinstieg GameEntry (von StarForce lernen).

Seine Rolle besteht eigentlich darin, die Referenzen aller Framework-Module (einschließlich eingebauter und benutzerdefinierter) Komponenten zu speichern und zu verwalten, was für globale Aufrufe praktisch ist. (Tatsächlich gibt es einen GameEntry und einen GameFrameworkEntry innerhalb des Frameworks . Ich persönlich bin der Meinung, dass der hier erstellte GameEntry ein Schritt der Entkopplung zwischen dem Framework und dem Hauptteil des Spiels ist).

Erstellen Sie den Ordner „Scripts“ :

Erstellen Sie darin den Basisordner :

Erstellen Sie drei Skripts , GameEntry, GameEntry.Builtin und GameEntry.Custom , um die drei Teile der GameEntry- Klasse (buchstäblich) zu verwalten:

Die Codes der drei Skripte lauten wie folgt:

//GameEntry.cs
using UnityEngine;
using UnityGameFramework.Runtime;

namespace ShadowU
{
    public partial class GameEntry : MonoBehaviour
    {
        private void Start()
        {
            InitBuiltinComponents();
            InitCustomComponents();
        }
    }
}


//GameEntry.Builtin.cs
using UnityEngine;
using UnityGameFramework.Runtime;

namespace ShadowU
{
    /// <summary>
    /// 内置模块
    /// </summary>
    public partial class GameEntry : MonoBehaviour
    {
        /// <summary>
        /// 获取游戏基础组件。
        /// </summary>
        public static BaseComponent Base
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取配置组件。
        /// </summary>
        public static ConfigComponent Config
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取数据结点组件。
        /// </summary>
        public static DataNodeComponent DataNode
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取数据表组件。
        /// </summary>
        public static DataTableComponent DataTable
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取调试组件。
        /// </summary>
        public static DebuggerComponent Debugger
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取下载组件。
        /// </summary>
        public static DownloadComponent Download
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取实体组件。
        /// </summary>
        public static EntityComponent Entity
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取事件组件。
        /// </summary>
        public static EventComponent Event
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取文件系统组件。
        /// </summary>
        public static FileSystemComponent FileSystem
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取有限状态机组件。
        /// </summary>
        public static FsmComponent Fsm
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取本地化组件。
        /// </summary>
        public static LocalizationComponent Localization
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取网络组件。
        /// </summary>
        public static NetworkComponent Network
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取对象池组件。
        /// </summary>
        public static ObjectPoolComponent ObjectPool
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取流程组件。
        /// </summary>
        public static ProcedureComponent Procedure
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取资源组件。
        /// </summary>
        public static ResourceComponent Resource
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取场景组件。
        /// </summary>
        public static SceneComponent Scene
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取配置组件。
        /// </summary>
        public static SettingComponent Setting
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取声音组件。
        /// </summary>
        public static SoundComponent Sound
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取界面组件。
        /// </summary>
        public static UIComponent UI
        {
            get;
            private set;
        }

        /// <summary>
        /// 获取网络组件。
        /// </summary>
        public static WebRequestComponent WebRequest
        {
            get;
            private set;
        }

        private static void InitBuiltinComponents()
        {
            Base = UnityGameFramework.Runtime.GameEntry.GetComponent<BaseComponent>();
            Config = UnityGameFramework.Runtime.GameEntry.GetComponent<ConfigComponent>();
            DataNode = UnityGameFramework.Runtime.GameEntry.GetComponent<DataNodeComponent>();
            DataTable = UnityGameFramework.Runtime.GameEntry.GetComponent<DataTableComponent>();
            Debugger = UnityGameFramework.Runtime.GameEntry.GetComponent<DebuggerComponent>();
            Download = UnityGameFramework.Runtime.GameEntry.GetComponent<DownloadComponent>();
            Entity = UnityGameFramework.Runtime.GameEntry.GetComponent<EntityComponent>();
            Event = UnityGameFramework.Runtime.GameEntry.GetComponent<EventComponent>();
            FileSystem = UnityGameFramework.Runtime.GameEntry.GetComponent<FileSystemComponent>();
            Fsm = UnityGameFramework.Runtime.GameEntry.GetComponent<FsmComponent>();
            Localization = UnityGameFramework.Runtime.GameEntry.GetComponent<LocalizationComponent>();
            Network = UnityGameFramework.Runtime.GameEntry.GetComponent<NetworkComponent>();
            ObjectPool = UnityGameFramework.Runtime.GameEntry.GetComponent<ObjectPoolComponent>();
            Procedure = UnityGameFramework.Runtime.GameEntry.GetComponent<ProcedureComponent>();
            Resource = UnityGameFramework.Runtime.GameEntry.GetComponent<ResourceComponent>();
            Scene = UnityGameFramework.Runtime.GameEntry.GetComponent<SceneComponent>();
            Setting = UnityGameFramework.Runtime.GameEntry.GetComponent<SettingComponent>();
            Sound = UnityGameFramework.Runtime.GameEntry.GetComponent<SoundComponent>();
            UI = UnityGameFramework.Runtime.GameEntry.GetComponent<UIComponent>();
            WebRequest = UnityGameFramework.Runtime.GameEntry.GetComponent<WebRequestComponent>();
        }
    }
}



//GameEntry.Custom.cs
using UnityEngine;
using UnityGameFramework.Runtime;

namespace ShadowU
{
    /// <summary>
    /// 用户自定义模块
    /// </summary>
    public partial class GameEntry : MonoBehaviour
    {
        private void InitCustomComponents()
        {

        }
    }
}

(Der Code des eingebauten Teils kann kopiert werden, da er im Grunde tot ist, und dann kann das Selbst in Custom mit der Erweiterung verglichen werden.)

Erstellen Sie dann einen Szenenordner und eine ShadowULauncher- Szene als Startszene, fügen Sie ein leeres Objekt FrameWork hinzu , hängen Sie GameEntry daran und legen Sie das Prefab GameFrameWork als untergeordnetes Objekt fest:

An dieser Stelle sind die grundlegenden Vorbereitungen abgeschlossen, und der Erstellungsprozess beginnt unten.

 

Supongo que te gusta

Origin blog.csdn.net/HowToPause/article/details/127183803
Recomendado
Clasificación