由于GameFramework的官方Demo(StarForce)封装的比较多,不利于入门学习(但作为代码风格和编程思路的学习是非常好的),所以,我打算用尽量少(能不能用就不用)的封装来重新实现一遍StarForce的基础功能,希望能帮到初学框架的你。

在学习此Demo之前,强烈建议先看完Demo1至Demo6。

本Demo源码:https://github.com/mutouzdl/gameframework_demo.git

下载源码后,用Unity3D打开工程,进入DemoStarForce目录,即为本Demo的项目。

本Demo没有对应的教程,仅作学习参考用,以下为注意事项:

  1. DemoSF_GameEntry脚本要挂载到GameFramework对象上(或其他对象也行,总之要让这个脚本生效)
  2. 删除DemoSF_Launch场景里MainCamera的AudioListener,因为这个场景是不会卸载的,其他场景可能会有AudioListener,这样会警告有两个Listener
  3. 如果UI上的按钮无法点击,那是正常的,因为我们没有设置好UI组件,在UI组件下建一个Canvas,名字无所谓(这里是UI Form Instances):

    其次,必须把建好的Canvas对象拖到UI组件的Instance Root属性上

    做了以上操作后,UI仍然无法响应操作的话,那就是我们的预制体没有建好,我猜大家可能会直接把官方Demo的MenuForm预制体复制过来用,但是官方的预制体是比较特别的,它没有Canvas等必须的组件(它通过代码自动创建)。

    我们简单点,给自己的预制体加上两个必备脚本就可以了:

    最后,少不了在初始场景里加上EventSystem,不然是无法响应点击事件的。

  4. 离开菜单流程时,要关闭菜单UI(否则UI会一直存在)
  5. 初始场景(DemoSF_Launch)的Camera的Tag一定不要设置为MainCamera,因为这个初始场景是不卸载的,如果它的Camera是Main的话,在代码中调用Camera.main的时候就会查找到初始场景的Camera,而不是你当前场景的Camera。
  6. 加载实体时(ShowEntity),可以传递一个UserData,当实体显示时,可以通过OnShow、OnInit等函数的UserData参数获取传递的值。这种方式可以用于一些实体的动态赋值,比如武器发射子弹时,子弹的位置要怎么确定?这时候就可以在显示子弹的时候传递当前武器的位置过去,子弹在显示时就可以获得到这个位置信息。
  7. 本Demo为严重阉割版,只演示最基础的功能,碰撞处理逻辑也只是用日志展示,没有攻击特效、没有死亡特效、也没有血量和攻击等概念。

通过这个Demo,你可以了解到以下的知识点:

  1. Game Framework通过流程(Procedure)来控制场景间的切换
  2. 大部分操作是异步的(或者看起来是的),它们通过订阅事件来监听操作的结果(如加载UI成功事件、加载实体成功事件,唔,还有你自己定义的奇怪事件)
  3. 场景和UI是需要主动卸载的,否则会一直存在(哪怕切换了场景)
  4. 实体都要继承EntityLogic类,并且有固定的生命周期函数,套路很明确,上手比较轻松(你只要不断新建继承了EntityLogic的类,就能建立千奇百怪的实体了)。你可能印象最深刻的是:ShowEntity(加载实体)和HideEntity(隐藏实体)
  5. 记住UserData这个参数,它在订阅事件、加载实体等操作时都可以传递,然后在事件发生或实体成功加载时,你可以重新获得这个参数。然后,你可以做任何你想做的事情(不包括羞羞的那种)
  6. 本Demo十分简陋,仅供框架入门学习之用,学完本Demo后,请一定要继续研究官方的StarForce示例,并学习它的代码风格和思维。

[GameFramework]Demo-StarForce无封装简陋不完全版相关推荐

  1. ES系统封装教程 高级进阶版 提供Wind7,xp系统下载 (by 星空武哥)

     重新改了一下,由于一些地址链接有问题,现在所有下载软件都已经没问题了. 欢迎访问我的博客http://blog.csdn.net/lsyz0021 ES系统封装教程 高级进阶版,提供我自己封装的Wi ...

  2. 深度迅雷5.8.3.556无广告绿色超级精简版【迅雷6核心文件】-绿软下载

    深度迅雷5.8.3.556无广告绿色超级精简版[迅雷6核心文件] 软件介绍: 迅雷(Thunder) V5.8.3.556 无广告绿色精简奥运版 本程序由迅雷官方版本5.8.3.556精简制作,其中部 ...

  3. 安卓厨房软件linux,无烦恼厨房游戏安卓版

    无烦恼厨房游戏安卓版是一款美食制作类的经营养成手游,该游戏画面清新简约,内容丰富有趣.无烦恼厨房游戏安卓版游戏中玩家模拟经营一家美食店,每天都要烹饪出各种各样的美食来招待不同的客人,为了更好地满足顾客 ...

  4. 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径...

    最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...

  5. websocket demo,websocket封装,jquery下的websocket封装

    一.websocket封装github地址:https://github.com/yquanmei/websocket-demo. 二.需求 最近公司要求加入websocket的页面有点多,每次都重复 ...

  6. NoHttp详解之NoHttp最原生使用(无封装)

    参考博客:     点击打开链接 NoHttp详细文档:http://doc.nohttp.net NoHttp公益测试接口:http://api.nohttp.net https://github. ...

  7. GameFramework框架——StarForce案例之游戏流程大体知识总结

    目录 一. ProcedureLaunch流程 二.ProcedureSplash流程 三.ProcedureCheckVersion流程 *四.ProcedureUpdateVersion流程 五. ...

  8. subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?

    redis的基本操作指令就不多说了,今天对redis的进阶操作给大家介绍一下,以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用?相信大家读了本篇对redis的整体会有 ...

  9. GameFramework:StarForce资源讲解

    资源处理是游戏中很重要的一模块. 提示:资源创建,资源初始化,资源加载,资源卸载,为整个流程. 关于资源怎么创建出来的,如何打ab资源,看这篇内容:GameFramework:AssetBunle 工 ...

最新文章

  1. Android中常用的距离单位
  2. 《从缺陷中学习C/C++》——6.18 小结
  3. requests.exceptions.TooManyRedirects: Exceeded 30 redirects
  4. mui 打开openWindow新页面不读取缓存的设置/mui中h5清除缓存页面的办法
  5. 【转】ABP源码分析三十:ABP.RedisCache
  6. nvarchar转换为numeric时出错_Oracle转换Postgres
  7. 猴子摘桃python代码_阿尔法python练习(4-6答案)
  8. index mysql_mysql 原理~ index的详解
  9. SQL Server应用程序中的高级SQL注入
  10. 青岛大学计算机科学技术学院几本,郝蓉-青岛大学计算机科学技术学院
  11. C# 实现对三维点数据的 显示
  12. 政策利好市场需求双加持,粉笔科技双轨并进强势突围
  13. (23)ObjectARX2015 + vs2012操作图层
  14. Excel不同列多条件计数
  15. 聆听天籁女声大碟《天碟落地》
  16. 神经网络发展历史时间统计表(留存收藏)
  17. 联通不断发短信-尊敬的用户请回复以下编码办理业务:599
  18. u盘插linux电脑不好使,u盘插电脑没反应怎么办的几种真正解决方式
  19. 计算机组成原理setb,计算机组成原理与汇编语言4
  20. 跟ChatGPT,聊聊ChatGPT

热门文章

  1. 求c语言学习的教程网站
  2. LCM通信库的安装及使用
  3. 用好WinXP自带的虚拟光驱
  4. matlab仿真四轮abs,ABS系统的simulink的仿真。
  5. 韦德高清图片壁纸下载
  6. matlab symadd,信号调理器设计—大二暑期信号分析实习报告精选多篇
  7. 基于Java毕业设计疫情社区志愿者组织的资源管理平台源码+系统+mysql+lw文档+部署软件
  8. 基于HFS快速搭建HTTP文件服务器
  9. 第五周 思维导图与快速学习
  10. 发现电脑屏幕总是不自动关闭?看看你是否打开了这些程序……