从零开始带你开发橙光游戏AVG框架(仿 葬花 )

日期: 栏目:招贤纳士 浏览:13 评论:0

  从零开始带你开发橙光游戏AVG框架【55课数 收费】

  从零开始带你开发橙光游戏AVG框架 unity教程【16课数 免费】

  QuickSheet使用

  可能是我换了untiy版本的原因

  Manual sovle

  在这里插入图片描述

  导了一个文件夹,有自己的库,也包含GameFramework、UnityGameFramework,暂时先删掉GameFramework、UnityGameFramework就完事了

  VS(Visual Studio)更改文件编码

  没改utf-8之前修改过,再改成utf-8没用。

  再从压缩包拉出来这些乱码的来覆盖掉,也一样没用

  就这结构

  GameStart

  UIMgr等Mgr

  Canvas

  Panel

  :MonoBehaviour 作为游戏入口,用来控制脚本顺序,存储脚本。

  在这里插入图片描述

  QFramework 是我跟着 QFramework第三版本 视频做的部分代码,其中包含 事件注册,关键词是 Register,UnRegister,Event,Command

  。。。。

  点击两个按钮会调用在 确定面板上 的 播放不同音效 的方法.

  用 QFramework 可以跑通

  。。。。

  调用顺序

  GameStart

  EnterCanvas

  EnterPanel

  EnterBtn

  其中EnterPanel是下文的父节点,EnterBtn是下文的子节点

  在这里插入图片描述

  支持中文,先试用下

  方便脚本名,标签名,节点名,三者对应

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  类似 AVG/MainCanvas/LoadCGPoltPanel/BG/CG鉴赏/ObjectPanel/PolePre/PoltBG/Polt

  位置是 AVG/MainCanvas/LoadCGPlotPanel

  AudioMgr.cs单例,并且挂到GameStart的子节点上,并且对相关引用进行调整

  在这里插入图片描述

  unity ‘SpriteRenderer’ does not contain a definition for ‘IsUsingDeformableBuffer’ and no accessible extension method ‘IsUsingDeformableBuffer’ accepting a first argument of type ‘SpriteRenderer’ could be found (are you missing a using

  Unity spriteRenderer error what i need to do?

  我是2020.3.23fc1,尝试了2没用,尝试了1,有用,没报错了,但是 2D Sprite 估计用到,后面报错再安装

  在这里插入图片描述

  01 将所有 AudioSource 放到 AudioMgr 的子节点上,并且改名了3个。

  02 后面有移动了 节点 AVG 上的 AudioSource 到 AudioMgr 的子节点 AVGSrc 上

  03 类似AVG/MainCanvas/LoadCGPlotPanel/BG/音乐赏析/BGMusic,也有一个AudioSource

  暂时不清楚为什么用那么多AudioSource,放内存应该用字典。(需要同时放?)

  原版放在 SettingPanel 上

  在这里插入图片描述

  也就是做好 SettingPanel 和 AudioMgr 的关系

  就是将相关代码 放 AudioMgr,让 SettingPanel 调用(Slider嘛)

  在这里插入图片描述

  前面的 EnterPanel 用到了 这两个 AudioSource ,也放到 AudioMgr 上,通过访问 AudioMgr 来调用

  改名为 EnterBtnSrc, DownBtnSrc,省下两个 Tag

  在这里插入图片描述

  在这里插入图片描述

  所以看了

  框架搭建 决定版:理论强化篇(第三季) 53课数

  自顶向下用方法

  自底向上用委托、事件

  委托要注册,注销。

  存在 回调地狱

  要声明委托

  缺点是,多个子节点都需要访问父节点,每个子节点都要声明委托,麻烦。

  解除限制,使用自有,需要增加小逻辑,是和模块之间的大颗粒度交互,不合适对象之间的小颗粒度交互

  带参数

  撤销

  Reference has errors ‘Google.GData.Client’.

  不明,莫名其妙的坏了,好了

  原本是都在根目录

  QFramework

  QFrameworkData

  改成在Plugins/QFramework就报错了,而且会一直在根目录生成QFrameworkData

  QFramework

  QFrameworkData

  在这里插入图片描述

  打算拆出来放在一个文件夹AnimationEvent下

  TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocations, size 40

  有些线程没释放

  [Report All【没用】]](https://blog.csdn.net/wenshuai537/article/details/123558838)

  Assembly ‘Assets/QuickSheet/GDataPlugin/Editor/Google/Google.GData.Extensions.dll’ will not be loaded due to errors:

  Reference has errors ‘Google.GData.Client’.

  迷,重启电脑后没了

  01 我改了Component拓展方法中 using GameObject = UnityEngine.GameObject;

  02 整理时将 QuickSheet 移动到 Plugins,报错;又移动出来,报找不到 meta的 错,重启Unity后就好了

  03 重启Unity后,不被CSharp项目识别就好了

  将所有动画事件提取出来,以 节点名_动画名 的方式命名脚本,统一放到一个文件夹

  如图所示

  01 动画 MainAnim 有两个 事件(也就是方法)

  02 这两个方法放在一个脚本里,脚本的命名是 要挂的节点名_动画名

  03 将该 动画事件脚本 挂载节点上

  原版是将所有的 动画事件都放在一个脚本 AnimManager。动画事件又是 0引用 ,所以难管理。

  在这里插入图片描述

  01 动画事件调用某些属性

  02 属性在Init()方法中赋值

  但 01 比 02 快,导致属性还没赋值就被调用

  所以先这样,这是跟Siki学院的Ocean老师学RealFrame时的。就是 等人再干活

  Crt 是协程的英文Coroutine,我选的 简写

  动画认名字【改过变黄,识别不了】(这点不好,应该认uuid)

  在这里插入图片描述

  点击 开始游戏 出现的, 照理说这时候什么都初始化好了

  F5了,Instance为空

  。。。。

  MonoBehaviour不能有用new的方式

  所以用以下

  在这里插入图片描述

  将大量的SetActive()改成Show()和Hide()

  死锁

  猜,断点的地方是用到了映射(自己的一个能得出命名空间、类名、方法名的方法)

  将能沉下到各个 Manager 、Canvas、 Panel 的方法沉下去

  比如一个方法的参数都是 AudioMgr 中的,直接把这个方法提到 AudioMgr ,再去间接调用

  C# private不显示有一会,后面又显示了

  原版是在AVGMainAnim.cs

  借点命名都是,如果发生节点丢失很难区分。(虽然有注释)

  在这里插入图片描述

  在这里插入图片描述

  重启Untiy,猜是编译不及时,好像没转圈圈

  点击悬停音效

  原版是直接拖拽节点,我改单例,前面是用无参的事件注册,学会有参在一起改

  同时加到下面4个按钮上

  在这里插入图片描述

  在这里插入图片描述

  在子节点中找命名为 “ResetBtn” 的按钮, 添加 ResetVolume 的事件, 最后将按钮返回

  子脚本有ScreenSettings 。语言设置没做,屏幕设置好像没有效果。

  SettingsPanel在MainCanvas下

  GamePanel在PlotCanvas下

  SettingsPanel在Update中调用GamePanel,也就是PlotCanvas的初始化要在MainCanvas之前(调一下顺序)

  挂在这里,被 SettingsPanel 调用和初始化

  在这里插入图片描述

  MPC,Music(音乐) Plot(剧情) CG(计算机动画)

  。。。。。。

  1 总的tab,有MPC三种

  2 散的tab,MPC各自的所有内容

  3 MPC在面板上显示的内容

  。。。。。。

  原版只有 TabGround 和 TabBtn 两个脚本,就1,2都是使用同样的TabGround,所以这部分的初始化区别分开,因为里面的PanelGoLst,面板位置关系不一样(不是都能在子节点找到,拖拽的话丢失麻烦)

  在这里插入图片描述

  在这里插入图片描述

  挂在剧情的父节点或以上,我挂的是MPCPanel节点

  挂在这两个节点上

  PanelGoLst.Add( gameObject.FindChildDeep(“剧情回放”));

  PanelGoLst.Add( gameObject.FindChildDeep(“CG鉴赏”));

  挂在所有的按钮上。(1,2,3,4这样的选项卡)

  在这里插入图片描述

  删掉原版的TabGround,用TabGroundSL:TabGroundSL ,和SaveLoadPanel ,都是挂在SaveLoadPanel 节点上

  在这里插入图片描述

  01 运行原版的,先是 黑屏Canvas 闪一下(显示又隐藏)。MainCanvas不变,MainPanel(主菜单界面)隐藏。然后显示 GamePanel(StartAVG)

  02 黑屏Canvas 的滑动,有动画事件,单独提取出来(没引用一个个看动画器看麻烦了),放在BlackCanvas_BlackCanvas (所在的节点名_动画名)

  在这里插入图片描述

  在这里插入图片描述

  虽然不影响运行

  开始游戏,仍然在主菜单,并且PlotCanvas被隐藏

  原版是HideMainBtn,我调用HideMainPanel才能

  PlotCanvas初始化不Hide

  Button之类

  Button

  :Selectable

  :UIBehaviour

  :MonoBehaviour

  :Behaviour // Behaviours are Components that can be enabled or disabled.

  在这里插入图片描述

  Resources/Role/2 不会

  Resources/Role/3 的数据 sprite 经常在运行游戏后丢失为 none(执行一次选项按钮后)

  这个是之前对话的记录面板,在GamePanel时滚动滑轮触发。

  但是问题时好像不是随时记录的

  在这里插入图片描述

  里面有说明文档 Assets/QuickSheet/Doc/Unity-Quicksheet.pdf

  01 新建(这两个连锁的)

  Excel Settings

  Excel Machine

  在这里插入图片描述

  02 新建表格,Excel Machine 中加入表格,确定 Sheet,属性类型。配置Editor,Runtime文件夹路径(不包括Assets)。然后Generate。(我这里报错了)

  在这里插入图片描述

  在这里插入图片描述

  03 解决小bug后,右键reimport

  在这里插入图片描述

  手动改回来 //

  在这里插入图片描述

  就是节点间的访问

  事件注册的使用

从零开始带你开发橙光游戏AVG框架(仿 葬花 )

从零开始带你开发橙光游戏AVG框架(仿 葬花 )

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。