zoukankan      html  css  js  c++  java
  • GameFramework摘录

    GameFramework的模块密封性相当好,如果使用unity的assemblydef,其设计可以把框架项目与自己的游戏逻辑分离开来。
    除一些常用的基类、枚举等,核心模块设置为internal权限,密封在框架项目中。
    在游戏逻辑需求时,通过入口类GameFrameworkEntry获取

    其对外接口由interface定义,如EventManager的实现:

    namespace GameFramework.Event
    {
    	public internal IEventManager
    	{
    		int EventHandlerCount
    		{
    			get;
    		}
    		
    		int EventCount
    		{
    			get;
    		}
    		
    		// ...
    	}
    
    	internal sealed class EventManager : GameFrameworkModule, IEventManager
    	{
    		// ...
    	}
    }
    

    接口IEventManager实际在整个框架内只用了一次,并没有起到interface通常的“抽象”功能,而是作为从外部到框架模块的入口。

    public static class GameFrameworkEntry
    {
        public static T GetModule<T>() where T : class
        {
            Type interfaceType = typeof(T);
            if (!interfaceType.IsInterface)
            {
                throw new GameFrameworkException("...");
            }
            
            if (!interfaceType.FullName.StartsWith("GameFramework."))
            {
                throw new GameFrameworkException("...");
            }
    
            string moduleName = string.Format("{0}.{1}", interfaceType.Namespace, interfaceType.Name.Substring(1));
            Type moduleType = Type.GetType(moduleName);
            if (moduleType == null)
            {
                throw new GameFrameworkException("...");
            }
    
            return GetModule(moduleType) as T;
        }
    }
    

    可以看出, GameFramework.Event.IEventManager只是GameFramework.Event.EventManager的对外接口
    在使用框架时

        IEventManager mgr = GameFrameworkEntry.GetModule<GameFramework.Event.IEventManager>();
        Console.WriteLine(mgr.EventHandlerCount);
    
  • 相关阅读:
    elasticHD
    python3--socketIO_client 摸索怕坑指南
    治疗重新造轮子症系列——递归查询json数据中所有的key值
    REST FRAME WORK--认证 权限 Xadmin
    REST FRAME WORK--视图基类 视图集
    REST FRAME WOEK 请求与响应&视图
    REST FRAME WORK--1
    VUE--axios--对象提供的属性功能
    VUE--组件化开发--VUE-CLI
    Vue中发送ajax请求——axios使用详解
  • 原文地址:https://www.cnblogs.com/lunoctis/p/12022928.html
Copyright © 2011-2022 走看看