TargetableObject是可当作目标物entity的逻辑脚本都要继承的脚本

实现接口:

  • OnInit
  • OnShow
  • OnUpdate
  • OnDead:GameEntry.Entity.HideEntity(this);
  • OnTriggerEnter:计算伤害

自己的函数

        public void ApplyDamage(Entity attacker, int damageHP){float fromHPRatio = m_TargetableObjectData.HPRatio;m_TargetableObjectData.HP -= damageHP;float toHPRatio = m_TargetableObjectData.HPRatio;if (fromHPRatio > toHPRatio){GameEntry.HPBar.ShowHPBar(this, fromHPRatio, toHPRatio);}if (m_TargetableObjectData.HP <= 0){OnDead(attacker);}}

自己的子类需要实现的接口

        public abstract ImpactData GetImpactData();

————————

TargetableObjectData也是一个,分了阵营

AircraftData继承于它,这个data在onshow时作为user data传入,

传入时根据配置中的对象进行对应不同模块的加载:

        public AircraftData(int entityId, int typeId, CampType camp): base(entityId, typeId, camp){IDataTable<DRAircraft> dtAircraft = GameEntry.DataTable.GetDataTable<DRAircraft>();DRAircraft drAircraft = dtAircraft.GetDataRow(TypeId);if (drAircraft == null){return;}m_ThrusterData = new ThrusterData(GameEntry.Entity.GenerateSerialId(), drAircraft.ThrusterId, Id, Camp);for (int index = 0, weaponId = 0; (weaponId = drAircraft.GetWeaponIdAt(index)) > 0; index++){AttachWeaponData(new WeaponData(GameEntry.Entity.GenerateSerialId(), weaponId, Id, Camp));}for (int index = 0, armorId = 0; (armorId = drAircraft.GetArmorIdAt(index)) > 0; index++){AttachArmorData(new ArmorData(GameEntry.Entity.GenerateSerialId(), armorId, Id, Camp));}m_DeadEffectId = drAircraft.DeadEffectId;m_DeadSoundId = drAircraft.DeadSoundId;HP = m_MaxHP;}

同时有自己的属性,包括存了其他内容的其他data等:

        [SerializeField]private int m_MaxHP = 0;[SerializeField]private int m_Defense = 0;[SerializeField]private int m_DeadEffectId = 0;[SerializeField]private int m_DeadSoundId = 0;

还有一些方法:如

        private void RefreshData(){m_MaxHP = 0;m_Defense = 0;for (int i = 0; i < m_ArmorDatas.Count; i++){m_MaxHP += m_ArmorDatas[i].MaxHP;m_Defense += m_ArmorDatas[i].Defense;}if (HP > m_MaxHP){HP = m_MaxHP;}}

————————————————

最后就是继承了targetobject的Aircraft了,

在OnShow中加载了武器和护盾。

至于这架机器的加载,则是在gamebase的initialize中:

            GameEntry.Entity.ShowMyAircraft(new MyAircraftData(GameEntry.Entity.GenerateSerialId(), 10000){Name = "My Aircraft",Position = Vector3.zero,});
                GameEntry.Entity.ShowAsteroid(new AsteroidData(GameEntry.Entity.GenerateSerialId(), 60000 + Utility.Random.GetRandom(dtAsteroid.Count)){Position = new Vector3(randomPositionX, 0f, randomPositionZ),});

观察这个showxx的函数,它的参数是一个data文件。

后面的60000和10000是一个typeid,entity带着的,一个唯一的编号,可以读取到。根据这个编号不不同的asteroid,在生成时就有所不同。

unity gameframework starforce学习1相关推荐

  1. unity DOTS的学习总结之Job System应用——绘制曼德勃罗集合

    接上回:DOTS的学习总结之Job System的介绍,这次就利用之前了解知识来做点效果. 上回在这:unity DOTS的学习总结之Job System 说到并行处理,那最适合拿来做实验的就是一些分 ...

  2. Unity超基础学习笔记(二)

    Unity超基础学习笔记(二) 1. 基本数据类型的扩展 之前在K12中学习了一些基本的数据类型,实际上C#支持更多的数据类型.如下: 注意无符号整型数和有符号整型数的表示范围,例如: int 能表示 ...

  3. unity地形模块学习

    unity地形模块学习: 问题一: 看不见自己抬高或拉低的操作结果 问题二: 制作地形过程中停止光照烘焙消耗内存 问题三: 加了direction light之后地形还是没有变亮 问题四: Unity ...

  4. Unity C# 网络学习(十二)——Protobuf生成协议

    Unity C# 网络学习(十二)--Protobuf生成协议 一.安装 去Protobuf官网下载对应操作系统的protoc,用于将.proto文件生成对应语言的协议语言文件 由于我使用的是C#所以 ...

  5. Unity动画系统学习

    Unity动画系统学习 文章目录 Unity动画系统学习 AnimationState 动画状态 Animation Transitions 动画过渡 动画分层和遮罩 动画混合 1D混合 2D混合 动 ...

  6. Unity动画状态机学习笔记

    Unity动画状态机学习笔记 一.建平面,拖人物模型.建状态机.动画导入.拖组件--实现Game时人物动画为等待状态. 二.拖WAIT01.WAIT02.WAIT03.WAIT04--实现按数字1切换 ...

  7. Unity之C#学习笔记(11):静态类型 Static

    前篇链接:Unity之C#学习笔记(10):接口和多态 Interfaces and Polymorphism 静态类型(Static)用一句话概括就是:在程序运行期间只会被创建一份的通用内容,用关键 ...

  8. 【Unity NGUI】学习笔记(二)之英雄攻击和装备武器

    玩魔兽世界的时候,游戏人物可以行走,奔跑,攻击,死亡等等行为,今天继续结合上一个案例[Unity NGUI]学习笔记(一):英雄选择,皮肤更换上给英雄添加动作行为. 一.准备工作 给英雄准备奔跑 攻击 ...

  9. Unity游戏框架学习笔记——03基于观察者模式的事件中心

    Unity游戏框架学习笔记--03基于观察者模式的事件中心 基于观察者模式的事件中心 一如既往指路牌:https://www.bilibili.com/video/BV1C441117wU?p=5. ...

最新文章

  1. web与APP之间的交互---WebViewJavascriptBridge
  2. 解决 NDK is missing a “platforms“ directory.
  3. 网络安全导论课程-windows开启远程
  4. LeetCode-二叉树-94. 二叉树的中序遍历
  5. oracle 快速上手,Oracle学习笔记:快速上手
  6. 新编计算机英语第六章,新编计算机英语-电子教案.ppt
  7. New Distinct Substrings(后缀数组)
  8. android音量键广播,音量控制键控制的音频流(setVolumeControlStream)描述
  9. (51)FPGA状态机描述(四段式)
  10. css中hover的妙用!!
  11. Child module pom.xml of pom.xml does not exist @
  12. Oracle中sql相关的命令
  13. 【UE4】UE4GamePlay架构
  14. minimumsnap(1)微分平坦特性(Differential Flatness)
  15. QT实现记事本代码(版本三)
  16. pg8168改mac命令_使用PG8168修改8111b网卡MAC地址
  17. 玩转诺基亚5800XM,新手上路指南
  18. Java 文件上传 三种方式
  19. java中string是什么意思_java中string什么意思
  20. WebForm网站和MVC网站运行机制的区别

热门文章

  1. JZOJ 5748 小Y增员操直播群
  2. 努力过一段时间后马上颓废? —— 一种解决方案
  3. TS流PAT、PMT、SDT内容
  4. JSFL自动绘画_5_黄金分割
  5. 多域控制器环境下Active Directory灾难恢复
  6. 探寻宝藏 【算法设计与分析课设】 c语言代码 + 思路详解 + 三维优化
  7. 装修房水电验收标准,水电验收注意事项
  8. 网站被封了?用美国空间吧
  9. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
  10. 行业门户网站、论坛的微信内容运营策划