来说说组件(Components)模式

1.什么是组件模式?通俗点讲,我觉得他像一个机械工程一样,像飞机,潜艇,他有许多的零件系统组成,各个零件部门相互独立,独立来加工,等把需要的组件零件都加工生产完成之后,由组装师组成一个完整的个体,而要启动这个整体飞机要起飞,潜艇要发射炮弹,各个系统组件都协调有序的运行起来。而这些组件又想独立于系统,随时可以进行更换,进行升级。
3,游戏中最常见的就是任务角色的设计,组件模式用的比较多,还有就是slg类的游戏,像建筑的升级,城堡的建设等等。我们今天来实现一个人物角色的组件设计模式。一个Avatar通常可以飞,可以跑,可能会受到伤害,可以攻击别人,这样我们都可以把这些行为作为一个组件,然后我们一个角色就可以随意的来进行组合,来达到我们要的效果。

2.在游戏中是怎么使用的?现在的游戏中大量的用到了组件模式,他比继承更具有解偶性。他更加的方便维护,来进行开发,一个好的游戏系统设计出来,当引擎无论的怎么更替,业务逻辑怎么样的变更,仍然能够井井有序思路清晰的来开发,并且bug率很少,好多比较次的游戏系统中一个文件的代码达到好几千行,像这样看着都费劲,更别说可读性了,从而整个开发的效率成几何一样的下降,并且全是bug,这样你很难去管理,同时坑队友。

我们创建一个实体EntityBase类,来作为一个主体。

using System;
using System.Collections.Generic;
using UnityEngine;

public class EntityBase
{

	public IDictionary<string ,ComponentBase> componentMaps = new Dictionary<string,ComponentBase>();
 	
	/// <summary>
	/// 加入组件方法
	/// </summary>
	/// <param name="key">Key.</param>
	/// <param name="comptBase">Compt base.</param>
	public void AddComponent(string key,ComponentBase  comptBase)
	{
		if (comptBase == null) 
		{
			Debug.Log ("add component failed: comptbase == null");
		}

		if(!componentMaps.ContainsKey(key))
		{
			componentMaps.Add (key,comptBase);
			this.AttachedComponent (comptBase);
			comptBase.AddFromEntity (this);
		}
	}

	/// <summary>
	///通过Key值来删除组件
	/// </summary>
	/// <param name="key">Key.</param>
	public  void RemoveComponent(string key)
	{
		if(componentMaps.ContainsKey(key))
		{
			this.RemovedCo
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值