当前位置: 首页 > article >正文

Unity3D仿星露谷物语开发小结1

1、Cinemachine的作用及使用方法


(1)作用
控制Camera的模块,实现摄像机的复杂控制,比如角色的跟随,限制Camera的区域

(2)使用方法
在已有Main Camera的情况下,
通过【GameObject -> Cinemachine -> Virtual Camera】唤出

2、创建动画思路


先给对象添加Animator组件
然后配置动画逻辑选项
最后再【Window -> Animation -> Animation】添加动画片段

3、物体渲染顺序


1)Sorting Layer,越靠上的Sorting Layer越先渲染
2)Order In Layer,数字越小越先渲染
3)摄像机的距离,越远越先渲染

4、Sorting Group组件作用


确保所有子对象都被排序了,形成单一的个体

5、发布者/订阅者模式


首先,定义事件Event,xxevent(params)
然后,Publisher触发事件,if(xxevent != null){xxevent()}
最后,Subscriber订阅事件并进行处理,+=的方式进行订阅。

6、定义事件Event的两种方式


1)如果超过16个参数
先通过delegate定义委托函数
然后通过event + 委托函数 定义Event
2)如果未超过16个参数
通过event + Action 定义Event

7、OnEnable/OnDisable的调用时机,适合场景


前者:脚本组件被激活时,后者:脚本组件被禁用时。
适用于Event事件注册和释放的时候

8、绘制Tilemap技巧


1)左右翻转Tile:Shift + [
2)旋转Tile:Shift + ]

9、多场景共存现象


可以以Additive的方式存在2个场景,但是只能有一个激活场景

10、创建Tilemap Grid的步骤


1)创建Tilemap。自动创建中包含Grid和Tilemap两个gameobject,Grid负责网格属性,Tilemap用于绘制瓦片
2)配置调色板。创建调色板,将Sprite拖入调色板以生成瓦片。
3)绘制地图。使用笔刷将瓦片绘制到Tilemap上
4)添加碰撞体。给Tilemap对象添加Tilemap Collider 2D来触发碰撞事件,通过Composite Collider来优化碰撞体的生成。

11、添加Tilemap碰撞器


1)创建tilemap物体,设置Collider Type为Sprite
2)给玩家添加Collider组件
3)使用tilemap物体中的元素绘制图形,并且选择一个目标对象collisions对象
4)给collisions对象添加Tilemap Collider组件
5)给collisions对象添加Composite Collider组件,并设置Geometry Type为"Polygons",同时在Tilemap Collider组件中勾选"Used By Composite"

12、添加Cinemachine Confiner


1)创建多边形对象指定地图区域
2)给Virtual Camera对象的Add Extension添加Cinemachine Confiner组件
3)如果Virtual Camera对象不是在当前Scene中,
需要在代码中指定Cinemachine Confiner组件的m_BoundingShape属性为多边形对象

13、某个脚本执行的前提条件是存在某个组件的写法


[RequireComponent(typeof(SpriteRenderer))]

14、创建ScriptableObject组件


1)能否挂载到游戏物体上?
不能,因为它不是继承自MonoBehaviour
2)使用方法?
创建类继承自ScriptableObject
通过[CreateAssetMenu(fileName=xx, menuName=xx)]指定属性信息

15、PropertyAttribute类及核心方法


自定义属性特性的基础类,提供类似[SerializeField]的属性标签
1)GetPropertyHeight指定像素高度
2)OnGUI重绘信息UI

16、CanvasGroup组件作用


用于集中控制UI元素的透明度、交互性和射线投射行为。

17、Aspect Ratio Fitter组件的作用


按照给定的宽高比调整UI元素的尺寸。

18、TextMeshPro组件作用


是一个Unity文本组件,比Text文本样式更加丰富和灵活,缺点是找不到字体不会像Text有默认字体。

19、Canvas的Render Mode含义和3种模式的区别


含义:Render Mode为渲染模式,指UI的呈现方式
Screen Space-Overlay:Canvas会覆盖整个屏幕,所有UI元素的坐标都是基于屏幕空间的。UI元素会始终显示在屏幕的最前面,不受场景种其他物体的影响。
Screen Space-Camera:Canvas会被放置在指定的摄像机前方,UI元素的坐标也是基于屏幕空间的,但会受到摄像机的影响。UI元素会随着摄像机的移动和旋转而变化。
World Space:Canvas会作为3D场景中的一部分,UI元素的坐标是基于世界空间的,UI元素会像3D对象一样存在于场景中,可以与其他3D对象进行交互。

20、拖动物体的3个事件接口


开始时:IBeginDragHandler
拖动时:IDragHandler
结束时:IEndDragHandler

21、ContentSizeFitter组件的作用


根据内容的大小自动调整UI元素的大小,确保内容不会被截断或溢出

22、Vertical Layout Group组件的作用


用于在垂直方向上自动排列子对象的局部管理组件。
UI布局可以随着元素数量或窗口大小动态调整。

23、鼠标经过的2个事件接口/鼠标点击的事件接口


经过开始点:IPointerEnterHandler
经过结束点:IPointerExitHandler
鼠标点击:IPointerClickHandler

24、AnimatorOverrideController类的作用/2种使用方法


动画重写控制器。
1)AnimatorOverrideController aoc = new AnimatorOverrideController(animator.runtimeAnimatorController);
其中animator为对象的Animator组件
animator.runtimeAnimatorController = aoc;
aoc["shot"] = weaponAnimationClip[weaponIndex]

2)AnimatorOverrideController aoc = new AnimatorOverrideController(animator.runtimeAnimatorController);
List<KeyValuePair<AnimationClip, AnimationClip>> clipOverrides;并进行赋值
aoc.GetOverrides(clipOverrides); 
aoc.ApplyOverrides(clipOverrides);

25、附加方式加载Scene并设置Active的方法


SceneManager.LoadSceneAsync(xx, LoadSceneMode.Additive);
SceneManager.SetActiveScene(xxScene);

26、Start()方法当协程使用的方法


将返回值改为IEnumerator,其他周期函数都不行
同时需要在方法体中有IEnumerator类型的返回

27、确保某个脚本的Start()方法先执行的方法


在Edit -> Project Settings -> Script Execution Order中设置脚本的执行顺序


http://www.kler.cn/a/535174.html

相关文章:

  • C#项目引用VB.NET 类库项目,生成一个EXE,这是什么原理
  • 支持向量机(一)
  • 在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比
  • HTTP和HTTPS协议详解
  • 基于SpringBoot的信息技术知识赛系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • DeepSeek最新图像模型Janus-Pro论文阅读
  • 乒乓日常烧拍日记之五在吐槽中找缺陷
  • deepseek API 调用-golang
  • Continue 与 CodeGPT 插件 的对比分析
  • 22、Java 函数式编程:开启高效编程新境界
  • 【csp/信奥赛C++语法学习如何入门?】
  • 关于视频字幕
  • 如何用GISBox将高斯泼溅文件(PLY/Splat)转换为3DTiles?全流程解析
  • Ubuntu安装OpenSSF Scorecard
  • GRN前沿:STGRNS:一种基于transformer的可解释方法,用于从单细胞转录组数据推断基因调控网络
  • centos 7.6 安装mysql实用方案
  • 《具身智能时代:机器人具身抓取技术的前沿探索与应用综述》
  • 代码随想录算法训练营第二十九天| 回溯算法02
  • 关于React前端
  • UE5 蓝图学习计划 - Day 13:确定游戏类型与核心功能
  • Android 9.0 mtk默认浏览器Browser下载app不能安装问题的解决办法
  • Flutter的绘制流程
  • [Unity角色控制专题] 详细说明如何使用Character Controller配合脚本实现类似MC的第一人称控制(仅移动与视角摇晃)
  • C++《AVL树》
  • 一文解释nn、nn.Module与nn.functional的用法与区别
  • 20250206在ubuntu20.04下使用unzip解压缩带中文名的文件