2.1 数据库 视频
2.2 Java环境 视频
2.3 VSCode 视频
三、后台环境 视频
-
用Unity(2021.3.9及以上)打开CrazyCar -> CrazyCarClient项目;
-
由于项目使用了HybridCLR,所以先配置项目的IL2CPP:打开菜单HybridCLR/Installer, 点击
安装
按钮进行安装,具体操作可以查看HybridCLR (code-philosophy.com);Assets->HotUpdate文件夹为热更文件夹,热更的DLL打包好会放入Assets->HotUpdateDll,这些打包的时候都已经封装好了,直接执行菜单Build/Remote
-
在Unity中设置Login场景中的NetworkController,设置成Local(当然你不愿意部署服务器,也可以使用Remote,那就可以跳过下面所有的步骤);
-
启动Mysql,并运行CrazyCar -> CrazyCarServer -> src -> main -> resources中的data.sql脚本,部署数据库,注意Mysql账号和密码需要和配置文件保持一致
-
配置Java环境(JDK17):官网下载JDK17 (win10请下载exe,Mac下载dmg不要下载zip自己配置)-->配置系统环境变量 详细教程
-
VScode安装Spring Boot开发插件:Extension Pack for Java、Spring Initializr Java Support、Maven for Java、Community Server Connectors(原Tomcat)、Lombok
-
VS code配置Java和Maven路径*(此路径为在Editor运行时的加载路径,打包时需要本地环境变量配置好maven与jdk相关路径)*,Mac 和Windows示例如下:
-
使用VScode打开文件夹:CrazyCarServer,F5启动项目
-
服务端运行成功后,即可运行Unity客户端;
- 如果你是第一次部署服务器,可能会出现Mysql运行脚本、VScode配置Java、Maven环境加载失败等问题,请自行Google!
- 游戏支持单机模式,如果你没有服务器,也可以进行打版测试(直接Build出版本就行)
- Apifox接口测试分享
- 安装nodejs 16 ,使用VScode打开文件夹:CrazyCarBackground,然后在终端运行npm install安装依赖,最后使用npm run dev运行即可 (此模块按需求部署即可,详细操作文档 ,不要使用nodejs18及其以上版本,使用16)
- Unity 2021.3.9 f1c1
- VS 2019
- JDK 17 可高不可低
- MySQL 8.0.26
- Nginx 1.20.1 用户部署热更资源
- Nodejs 16.16.0 不要使用18以上版本
-
服务器配置流程(windows)
graph LR start-->购买服务器-->配置Java环境-->配置Web服务器(Nginx)-->配置Mysql
-
客户端配置流程(Windows/Mac)
graph LR start-->配置Java环境-->配置Maven环境-->配置Mysql-->配置VScode开发环境-->安装Unity
-
配置服务器基本属性
Unity 2021.3.9 及以上
以添加新类型Medal(勋章)为例
- CrazyCar\CrazyCar\Assets\AB文件夹下添加新的文件夹Medal
- 相应的资源放入此文件夹
- 打开Windows -> Asset Management -> Groups窗口
- 点击Create创建新的Group,命名为Medal
- 将资源拖入此分组
- 点击Build -> New Build,进行生成增量包 (请自行百度Addressable了解生成新包和增量包的区别)
- 将CrazyCar\CrazyCar\Assets\StreamingAssets下生成的包放入CrazyCar\CrazyCarServer\src\main\webapp重新生成War/Jar包发布到服务端即可
- 具体分组的参数设置可以查看此文章
- 所有的热更脚本需要放入,Project->HotUpdate文件夹中
- 需要热更的UI,需要拖入Addressable的WaitingHot分组中,如LoginU
- 然后点击Windows->Build->HotFix
- 将Project->StreamingAssets中的对应的资源放入CDN或者热更服务器中即可
点击HotFix,首先会自动的执行HybridCLR资源整理,然后替换Project-->HotUpdateDll下的HotUpdate.dll.bytes,然后再进行Addressable资源打包,这一切都是自动化的,无需手动修改,至于为什么要替换HotUpdate.dll.bytes,需要自己去看一下HybridCLR的文档。
- 将头像放入Assets -> AB -> Avatar 文件夹
- 将新头像拖入Windows -> Asset Management -> Groups窗口,中的Avatar分组
- 在数据库avatar_name表中添加新的头像信息,ID字段为头像名
- 运行Unity,进行查看
- 点击Build -> New Build,进行生成新包
- 将CrazyCar\CrazyCar\ServerData下生成的包放入CrazyCar\CrazyCarServer\src\main\webapp重新生成War/Jar包发布到服务端即可
- Android、PC和IOS都是直接点击Build -->Local(过程中会让你选择目标文件夹),进行打版,Remote为使用线上服务器。
- 如果没有服务器,游戏支持单机模式,但是只能使用主功能,直接使用File --> BuildSettings --> Build即可。
- 复制一个CrazyCar --> CrazyCar --> Assets --> AB --> Equip--> Items文件夹下个任意一个Prefab ,并重命名
- 将你的装备的Icon、Material、Mesh放入CrazyCar --> CrazyCar --> Assets --> AB --> Equip对应的文件夹
- 双击开你的Prefab修改Prefab对应的信息,在复制好的基础上进行处理你要添加你的装备(当然你也可以重新制作一个新的,最后将EquipResource脚本放在根节点,并填好信息即可)
- 将新装备prefab拖入Windows -> Asset Management -> Groups窗口,中的Equip分组
- 在数据库all_equip表中添加装备信息
- 运行Unity,进行查看
- 点击Build -> New Build,进行生成新包
- 将CrazyCar\CrazyCar\ServerData下生成的包放入CrazyCar\CrazyCarServer\src\main\webapp重新生成War/Jar包发布到服务端即可
-
在数据库time_trial_class表中添加关卡信息即可
map_id为0-4,因为现在就5张图
- 在数据库match_class表中添加关卡信息即可
map_id为0-4,因为现在就5张图
-
在Unity中打开MapController.prefab,添加你的地图
-
将新图拖入到MapController中的MapsGO中
-
从Map0中复制一份CheckpointController,到新地图,并将CheckpointController里面的Checkpoint和EndSign,移动到相应的位置
-
从Map0中复制一份MiniMap,到新地图,将MiniMap下Plane中的Material换成新地图的素材
-
打开Game场景,将新地图的Scale调整的和现有地图大小相似
-
地图的起点位置为,Game场景中StartPos所在的位置
-
添加路线
-
添加Path空物体
-
在Path空物体下添加空物体PathCreator
-
给PathCreator添加PathCreator组件
-
通过Shift+左鼠标键添加节点,Ctrl+左鼠标键删除节点,制作地图路线
详情操作可以查看Path Creator - Google 文档
-
-
可以在TimeTrial添加相应的关卡进行测试
-
打开Tools --> Translate窗口
-
输入要翻译的文案数量以及内容,点击显示翻译按钮
-
查看翻译内容是否合适
-
点击添加翻译按钮,文案就会自动添加到CrazyCar\CrazyCar\Assets\Resources\Language\Locales对应的文件里
-
在需要添加新手教程的页面添加Guidance预制体
-
设置Guidance参数
-
CanvasType Guidance组件需要提供UI所在的父物体Canvas组件,在Index场景是通过UIController脚本管理所以页面,如果新增页面,有新的Canvas,需要在GuidanceSystem脚本进行添加并赋值,可以参考UIController操作过程
-
GuidanceType
可以设置点击区域是圆形还是矩形
-
IsClick
区域是否需要点击功能,如AvatarUI的这个关闭按钮不需要实现关闭AvatarUI页面功能,则不勾选
-
每个Guidance都需要新建一个Material(复制一份现有的AvatarGuidanceMat重命名就可以)
注:完成标识符为UserModel中的IsCompleteGuidance,完成条件为点击计时赛按钮
整体设计方案参考:在Unity中制作完整的技能系统(介绍篇) - 知乎 (zhihu.com)
- 在CrazyCarClient\Assets\AB\Skill\SkillData.json下添加对应技能配置,参数意义可以参考SkillData.cs
- 在CrazyCarClient\Assets\AB\Skill\SkillIcon和CrazyCarClient\Assets\AB\Skill\SkillPrefab下添加对应资源
- 技能指示器插件虽然已经集成,但是不建议在赛车游戏中加入,SkillData.skillIndicator为空就行
- 需要在InputSystemPanel.prefab和InputSystemPanel.cs添加新的技能按钮,操作的数值value就是技能id
-