- 博客(14)
- 收藏
- 关注
原创 Unity异步随记(自用
在IEnumerator函数中,我们可以使用到yield return StartCoroutine(方法名)或yield return 方法名 的方式来确保在该函数中,代码能够严格按照顺序逐步执行。在普通函数或IEnumerator函数中,我们可以使用StartCoroutine(方法名) 的方式将当前代码协程运行,同步开始执行下一行的代码。首先,可以把Unity中用到的函数分为两类,普通函数和IEnumerator函数。
2025-11-16 10:57:18
142
原创 Unity按钮绑定
即我们要绑定的是方法本身,写“方法名(参数)”的话,会直接调用。这也是为什么无参void方法可以不适用lambda表达式或匿名函数,因为它可以直接用“方法名”的方式绑定按钮从而不立即调用。按钮若是静态的、已经存在于场景中的对象,则可以直接通过拖拽来绑定点击按钮时触发的函数;按钮若是预制体,则只能通过脚本进行函数绑定。
2025-11-14 19:34:46
202
原创 Unity字体导入随记
另外注意从CSV文件中提取文字时若出现乱码还需要考虑CSV文件的编码格式是否是utf-8编码。首先需要找到ttf后缀的字体包,使用前需要转换成TMP的fontasset资源。fontasset资源会带两个子文件,材质包和字符库?sdf是一种转换的方式,转换后的字体资源文件会带这个后缀。
2025-11-13 20:07:06
74
原创 瓦片地图管理
通过对当前图层对象添加瓦片地图碰撞体组件,实现在该图层上添加瓦片时默认带碰撞体。但此时仍然可以通过rule tile在该图层上添加没有碰撞效果的瓦片。记得对图层显示顺序进行选择,一般从底层向表层绘制,数字越大越表层。Hierarchy中在Grid中添加子类,以区别图层。-想要使瓦片具有碰撞体积,可以添加组件。添加图层后,系统会自动在画板处更新。其中,注意勾选图中两个选项。
2025-10-23 21:07:36
116
原创 RPG角色的朝向和移动问题
lookDirection只在moveDirection不为0时进行记录,记录的为moveDirection最后的值;这样可以保证即使键盘上“Horizontal”和“Vetical”两个方向上的输入都为0时,仍然维持角色最后的朝向。通过在角色控制脚本上设置两个Vector2变量,分别为moveDirection和lookDirection。-moveDirection实时记录键盘上方向的输入;
2025-10-23 15:45:07
81
原创 开发练习心得记录(美术部分)
普通21图(即5*5 - 4,这样可以描绘纯地块、直线地块、角地块和转弯地块)(通过rule tile实际上只需要4张图即可)(需要注意角地块和转弯地块的两条变幻边对应的长度要相等,否则如果只通过4张图复用就会衔接不上)-常规角色的行走一般分为前摆、前触地、后移、后摆四个部分,每个部分用2帧来描绘。(2足的左右脚相差4帧,4足的同侧脚大约相差2帧,左右脚大约相差4帧)①角色和瓦片的大小比例一般是1:1,推荐使用32*32像素。-每种状态对应的Up、Down、Left三个方向的逐帧动画。
2025-10-23 13:58:07
209
原创 状态机模式解读
记录了三个变量声明和一个构造函数,用于在切换状态时,将player、animBoolName的值传递给当前状态,以便在进入、离开和处于该状态时实现一些和player以及animBoolName相关的功能。通过参数声明和Awake函数为状态机和所有状态脚本创建实例,并由此和玩家对象player相关联。-记录了两个方法,一个是初始化(切换到默认状态),一个是状态转换(切换到新状态)-记录了三个方法,分别为进入、离开和处于该状态需要执行的命令。(以上是其他各状态需要的且共有的基础内容)③玩家脚本Player。
2025-10-23 00:35:32
106
原创 unity切割精灵图时遇到的问题汇总
unity直接切割aseprite文件时,可能出现无法切割的现象,需要修改导入模式。(具体原因尚不清楚,有时无需修改导入模式)Aseprite导出PNG格式会出现失真(尚未解决)切割后进行重命名时如果与现有名称重复则无效。
2025-10-22 22:53:36
109
原创 对话系统UI外框自适应
大致原理应该是通过Control Child Size绑定UI外框和文本框之间的相对位置和相对大小关系,再通过Content Size Fitter使得UI外框可以自适应其子对象文本框的大小变化。若需要实现UI外框自适应文字体量,可以在UI外框对象上添加Vertical Layout Group组件和Conten Size Fitter组件。(若要实现向下扩展,则使用图例配置)一般对话系统由三个层级组成,画布→UI外框→文本框。其他参数后续再学习……
2025-10-21 13:06:56
202
原创 Unity三种图层的区别
【Sorting Layer】主要用于确定对象在场景中的显示优先级,在sorting layer中排序越靠前的图层显示优先级更高。【Order in Layer】主要用于在sorting layer同一层级中的对象再进一步地区别优先级。【Layer】主要用于确定对象在物理碰撞层面处于哪个层级,与功能实现高度相关。
2025-10-20 15:55:31
117
原创 画布Canvas笔记
当锚点聚为一点时,其用于确定和轴心点之间的相对位置,保证在父对象发生移动或形变时,子对象的轴心点和其在父对象上的锚点相对位置不变(或者说子对象的轴心点和锚点相对位置不变)。当锚点分散时,其用于确定子对象和父对象挂钩的范围,即无论父对象如何形变,子对象在父对象上锚点所框选的区域都同步发生改变,并且四个角点边界与原本挂钩的位置保持不变。锚点本质上是子对象在父对象上的位置标记,分为两种形态,一种是聚为一点,一种是分散。画布之下的每层对象都有自身对应的锚点(四个三角箭头)和轴心点(蓝色圈圈)
2025-10-19 20:05:08
74
原创 粒子效果设置记录
【Simulation Space】Local:粒子始终与挂载对象的位置保持一致;PS:切换的频率由Frame over Time图线决定,横轴0-1表示粒子的生命周期,纵轴0-2表示粒子动画的播放速度,播放完会随机转换成其他粒子。【Duration】粒子发射每个循环持续的时间(不勾选Looping的话就只播放这么久。【Start Speed】粒子发射的速度,同时决定了粒子发射的距离。【Simulation Speed】粒子整体动画播放的速度。【Start Frame】随机生成挂载的粒子素材。
2025-10-19 19:55:43
176
原创 Tilemap Collider2d 穿透问题(待解决
猜测原因:脚本中的人物移动是通过直接在每帧改变人物位置实现的,所以速度过快的话,可能无法与碰撞体进行正常交互(为什么正常的对象不会出现这种情况,仅瓦片地图会。问题描述:人物速度过快时,会穿过设置了碰撞体的瓦片地图。
2025-10-19 11:29:52
67
原创 【预制体生成】相关问题汇总
1.在预制体Controller脚本中,使用GameObject playerObject = GameObject.FindWithTag("Player")来获取Player对象。>不能在Inspect面板中直接拖拽,因为此时对象还没生成。问题①:预制体初始位置通过Instantiate函数的参数来赋值;2.通过对Player创建单例模式。
2025-10-16 17:13:17
411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅