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);
    
  • 相关阅读:
    【Java】LinkedHashMap
    【Java】 HashMap
    【译】Solr in Action 第三章
    【译】Solr in Action 第二章
    【译 】Solr in Action 第一章
    【Three.js】OrbitControl 旋转
    【翻译】JNA调用DLL
    .Net使用Redis详解之ServiceStack.Redis
    C#操作redis
    ECharts图介绍
  • 原文地址:https://www.cnblogs.com/lunoctis/p/12022928.html
Copyright © 2011-2022 走看看