DAY1-确定游戏视角、主菜单UI、本地化、菜单动画
规划
在初期游戏框架>游戏核心内容,我打算先确定好游戏几个核心场景的框架再开始填充内容
首先明确:我需要至少四个场景,分别是主菜单、游戏场景、组队大厅、训练营兼收集物品展示。
前几日就要重点处理主菜单的内容、主菜单与其他场景的链接
主菜单 UI
参考魔兽争霸3与杀戮尖塔两款游戏的主菜单UI,对于加载到主菜单的动画有如下构想
- 游戏界面由刚加载的纯黑,慢慢由“由远至近”点亮的火把所点亮
- 左侧的 UI 由锁链挂着的平台从上方掉落
借助AI提示词大致生成了与我预期接近的图

布置菜单内容
- 创建单独的场景,右键UI->Canvas创建一个画布
- Canvas下创建空对象,命名为MainMenu
- 为MainMenu添加Vertical Layout Group组件,参数可以微调
- 在MainMenu下创建UI->按钮-TextMeshPro

添加菜单掉落动画
想要为菜单添加重物落地弹回的动画,我通过DOTween实现。动画曲线的选择找到几个参考网站,以后做网页前端也可以参考
DOTween 配置
- 打开 Asset Store:在 Unity 编辑器顶部菜单栏点击 Window -> Asset Store(或者 Search Online),搜索 “DOTween (HOTween v2)”。
- 下载免费版:点击 Add to My Assets 然后在 Unity 的 Package Manager 中点击 Download 和 Import。
- 导入完成后,Unity 屏幕上会弹出一个带有绿色按钮的 DOTween 控制面板。点击 Setup DOTween… 按钮,在弹出的窗口中点击 Apply。这一步的作用是让 DOTween 扫描你的工程,并生成针对 UGUI(如 RectTransform, CanvasGroup)的专属扩展方法。

主菜单动画的代码单独放在Assets->Scripts->Menu->MainMenu->MainMenuUILoading.cs内
游戏场景
最先确定游戏玩法:俯视角 3D 游戏,所以第一天先解决了用户输入以及摄像机问题
临时使用立方体作为 Player 模型,添加刚体与碰撞体
玩家输入
使用Unity提供的新版Input System
- 在 Window -> Package Manager 中搜索并安装 Input System
- 为 Player 添加 Input System 组件
- Behavior 选择 Invoke Unity Events
- 在事件中选择 Player 下的 Move 事件,先完成基础的移动部分
- 因为是俯视角,所以要冻结Y轴的移动,在刚体组件中勾选 冻结Y轴移动

相机固定
- 安装 Cinemachine 插件
- 在场景中创建一个空对象,命名为 CameraController
- 为 CameraController 添加 Cinemachine Virtual Camera 组件
- 在 Virtual Camera 组件中,将 Follow 和 Look At 设置为 Player
- 调整 Cinemachine Virtual Camera 组件的参数,如 Damping、Follow Offset 等,以获得满意的相机效果

移动方向调整
斜俯视角游戏,默认的移动方向输入会出问题,我后续还希望添加类似饥荒的切换相机视角的功能,所以依照相机视角决定用户移动方向最为合适
即:速度=相机角度*输入向量

多语言选择
游戏内容的翻译应当在一开始便考虑好,实现方式选择Localization
配置 Localization
- 找到 Window -> Package Manager,左上角加号旁边的下拉菜单,选择 Packages: Unity Registry(查看官方库)
- 在右上角搜索框输入 Localization 搜索并安装
- 安装完成后在顶部菜单选择 Edit -> Project Settings…
- 在左侧列表中找到 Localization,并点击 Create 按钮
- Unity 会让你保存一个资产文件。在
Assets文件夹下新建一个叫LocalizationData的文件夹,将它存进去 - 依然在 Project Settings 的 Localization 页面中,点击 Locale Generator 按钮
- 在弹出的列表中,打勾选择Chinese(Simplified)(zh-Hans)、Chinese(Traditional)(zh-Hant)、English(en)
- 点击 Generate Locales。把它保存在你刚才建的
LocalizationData文件夹里 - 回到 Project Settings 页面,在
Available Locales列表里,把简体中文拖到列表的第一位作为默认语言

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Petrichor' Blog!
评论