记录下实习过程中自学Unity引擎以及第三方插件相关的内容。
Unity引擎
准备素材
准备素材,配置预设,加载动画
- [动画控制] 动画 帧 Animation AnimationController
- [单位标志] Tag Layer Unity: Tags
- [显示层级] sorting layer
- [自带组件] Box Collider / Rigidbody (Kinematic)
- [保存预设] Save as prefab
- [动画继承状态机] Animator Override Controller (share same state machine)
- [配置组件] Collider + Is Trigger(检测碰撞以触发,但不阻止物体进入)
关卡生成
- [容器] Transform
- [脚本] 将Script、Prefabs和GameObject关联
- [基类] MonoBehaviour is the base class from which every Unity script derives.
- [入口] 将Script和MainCamera关联
单位逻辑
- [移动对象] 教程视频 这个教程视频里用到了raycasting , 看YouTube评论下面基本全是吐槽,有空再仔细研究
- [更新显示] 与单位互动时,更新单位的显示(Sprite)
- [状态变化] AnimationController 状态变化->动画变化
- [监听输入] Input.GetAxisRaw
- [碰撞检测] MonoBehaviour.OnTriggerEnter2D(Collider2D)
- [基于层级的碰撞检测] Unity: Layer-based collision detection
- [位置信息] Transform
进阶相关
- [镜头控制] 跟随玩家视角
Window->Package Manager->Install "Cinemachine" | Cinemachine->Create 2D Camera->Follow Player Transform
- [播放音频] AudioSource为声音载体,对声音的播放进行配置, AudioClip为具体声音资源, 场景中需要至少一个Audio Listener来听到声音,可以添加到Camera或游戏对象上。
- [条件编译] 可在代码中通过判断指定宏是否定义来执行条件编译,如Unity编辑器中会定义
UNITY_EDITOR
,Android设备上会定义UNITY_ANDROID
。 - [加载场景] 可通过SceneManager.LoadScene来加载指定场景,配合自定义的参数可以实现关卡变更时的场景变化。
常用组件
- Sprite Render 2D图像渲染
- Box Collider2D 2D碰撞盒
- Rigidbody 2D 刚体 (物品引擎)
- Animator 动画控制器
- Script 脚本
- Transform 表示一个对象的位置,旋转角度和缩放
插件接入
有时需要接入第三方SDK,如果第三方没有提供Unity包的话,就只能自己打包成插件了。
- AndroidJavaObject Unity工程中使用AndroidJavaClass/AndroidJavaObject等类来调用Java插件工程中的接口。
- Building and using plug-ins for Android 安卓工程打包为库供Unity工程调用
- Plugin/Android 这个根目录下的AndroidManifest.xml会覆盖Unity项目自动生成的AndoridManifest.xml,而根目录下插件包内的AndroidManifest则会被合并到最终的AndroidManifest中。
- Android studio 中将已有模块转为Android library,改build.gradle中plugin为”com.android.library”