- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 【Lua in Unity】详解与和C#互相调用示例
游戏逻辑编写:Lua可以作为一种脚本语言,用于游戏中的逻辑编写,例如定义游戏角色的行为、AI逻辑,处理游戏的战斗逻辑和流程控制,等等。可以将Lua代码通过Unity的API来实现与引擎的交互。这样做的好处是,可以将游戏逻辑与引擎代码分离,加快开发速度,同时更容易修改和调试。配置数据管理:Lua也可以作为一种配置语言,用于管理游戏数据,例如定义游戏中的各种参数、表格、配置表等等。
2023-06-09 18:45:46
2468
1
原创 【Unity研究】进程、线程、对象池的关系
在Unity的代码中,update是在主线程中被执行的,不是在单独的线程中,而销毁物品等操作也是在主线程中执行的。对象池可以使应用程序更高效地利用有限的线程资源,相比起“在编辑器里就把所有物品放到场景中”和“在游戏开始时实例化所有物品(这个方法会让游戏卡顿)”,对象池能动态操控物品的出现和隐藏。正在运行的Unity游戏就可以看做一个进程的实例,线程是进程内的执行单元(一个进程可以拥有多个线程),Unity游戏中的详细操作是在同一个进程里的中执行的。需要使用对象的时候从对象池拿出对象,也就是显示物品。
2023-06-09 18:35:44
1686
原创 【C# in Unity】取绝对值;position变换注意点;协程注意点
【代码】【C# in Unity】取绝对值;position变换注意点;协程注意点。
2023-06-09 17:47:45
585
原创 【Unity功能】鼠标移动触发事件方法
注意:需要场景中包含EventSystem(在添加trigger组件后自动添加);方法二:Event Trigger。注意:UGUI不能使用该方法。
2023-06-09 17:44:06
1624
原创 【UnityBUG】CaptureScreenshotAsTexture相关BUG
要从此方法获得可靠的输出,必须确保在帧渲染结束后调用此方法,而不是在渲染过程中调用。确保这一点的一种简单方式是从一个在 WaitForEndOfFrame 上产生的协程调用此方法。如果在渲染过程中调用此方法,则会得到不可预测且未定义的结果。使用CaptureScreenshotAsTexture方法时,出现了BUG。上手册查了后,发现需要等待渲染结束后才能截屏,不然会报错。修改为协程,等待刷新后再截屏。
2023-06-07 12:24:11
657
原创 【C# in Unity】什么是多态性
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用"相同"的方法,产生的结果是不同的。多态也就意味着重复运行同一段代码,由于传入的值相同或者不同,这段代码会产生相同或者不同的结果。所谓多态的“态”,指的就是Test02。而“多态”指的就是向Test02传入不同的值,产生不同的结果。一眼看过去,新人一定会觉得很懵逼。来看Test9.cs脚本,其中Test02是一个带参的方法。其实,我们完全可以不管上面的说法。大家好,我是浮动指针。
2023-06-02 16:08:43
78
原创 【C# in Unity】继承详解①
如上图,我们可以看到Test10可以直接继承Test9, 而Test9继承于MonoBehaviour。刚刚去看了一下抽象(abstract)方法和虚(virtual)方法的区别,虚方法和普通方法没啥太大区别,抽象方法不能直接用,只能在子类中重写一遍再用。前言:找了八百本书三千篇博客都没讲清楚继承到底是什么,怕结构混乱我也不常用继承,以至于时不时搜一下继承是什么,实在是烦了,所以专门记录一下。感叹一句:写代码烦就烦在明明道理是一样的,可是写法稍微出错就全部崩盘,那把重点放在抽象概念上还有什么用呢。
2023-06-02 15:18:50
715
原创 【UnityShader】代码详解①
同时,由于参数传递是按值传递的,在函数执行完毕后,SurfaceOutputStandard结构体中被修改的值并不能返回给调用方(即上级Shader),使用inout关键字可以告诉编译器在函数执行完毕后将o变量中的修改传回到上级Shader中。在顶点着色器中,可以通过计算顶点的屏幕空间位置和模型变换矩阵,来计算顶点在纹理中的坐标,并将结果存储在Input结构体的成员变量中。"Opaque"渲染类型表示Shader是完全不透明的,会完全遮挡后面的物体,这种渲染类型通常用于不透明的材质,如石头、金属等。
2023-05-22 17:09:10
839
原创 在Unity 踩过的坑 之 Destroy方法
Destroy 方法在销毁一个对象时,并不是立即销毁,而是在下一次 Update 执行之前(所有对象的 Update 方法是统一执行,不会出现一个对象开始执行 Update 了,而另一个对象还在处理 FixedUpdate 这种情况)·介于上一条的,在调用 Destroy 方法后,可以继续访问此对象挂载的脚本中的方法或者其他组件,但在下一帧时,对象就会被销毁,指向对象的引用也会为空。这个功能是在销毁物体后按照顺序对物体进行命名,但命名的方法总是在Destroy方法执行之前就执行,导致命名混乱。
2023-04-19 11:31:49
1452
原创 视频转gif【不要钱!不要会员!还很方便!】
本来想偷懒搜搜视频转gif的pc端,结果全是要会员的、给自家网站打广告的,看不下去了。首先下载该软件,著名的Adobe全家桶成员。导入视频,网上都是教程,不详细说了。选择 文件-导出-导出gif。之后就可以自己调整参数了。
2023-03-02 09:06:35
262
原创 【unity】脚本挂载在场景中物体上时,inspector界面的脚本没有可勾选的框
这是因为脚本中没有生命周期方法,所以执不执行都是一样的。在脚本中添加生命周期方法后。
2022-11-25 08:55:59
773
原创 【unity】VideoPlayer第一帧刷新不出来的解决方法
问题:用的是RawImage+VideoPlayer,关掉首页再打开视频页时不能显示第一帧(打包出来显示空白),而当RawImage在UI最上层时可以显示第一帧。ps.为了保险,还可以提前设置RawImage显示在最上层,将透明度设为0,去掉射线检测(Raycast Target)。需求:点击按钮,关掉首页,打开视频浏览页,显示视频的第一帧。
2022-11-16 09:44:00
2776
原创 unity中的构造函数
在场景开始运行时,便运行了一次构造函数。而在脚本初始化时,又运行了一遍构造函数,同时开始生命周期的运行。在Data.cs中,有一个构造函数,内容为打印“开始”。而在生命周期Start中打印“开始1”。由于好奇,去看了下构造函数在unity中如何使用。定义中提到“执行时间”,那么和生命周期有什么区别?是类的一个特殊的成员函数,
2022-09-05 15:06:39
1615
原创 [unity]如何通过代码获取UI宽高和屏幕宽高
首先,使用GetComponent().sizeDelta获取,但是这样会有问题,会跟锚点设置有关,改变设置后获取不对。所以又看了API,可以使用GetComponent().rect获取。只适用于MiddleCenter。
2022-08-31 14:05:35
4009
原创 【unity】Animator机制的研究:Exit Time、Transition Duration、Transitions solo
但如果想要使动画播放到规定时间就切换到下一段动画,可以修改exit time达成效果,这样就不用回去修改动画本身。当我们将过渡时间设置为10时,运行场景,可以看到有一个蓝条在向下延申,这个蓝条就代表了过渡时间。当exit time小于动画本身的总时长时,播放动画的时长会和exit time同步。当过渡时间结束,动画1才彻底停止播放,而动画2进入下一段transition的判断。如果想完整播放动画,那么就不要使exit time<动画总时长。......
2022-08-30 09:33:22
3556
原创 网站与软件收集【持续更新】
程序书籍https://www.ituring.com.cn/search/result?提取伴奏人声 https://dango.ai/taptap游戏开发者中心。机翻文章,但是有英文原文。
2022-08-16 10:05:16
530
原创 今天困扰我的问题:使用Animator,动画结束后物体状态回归原位
动画为物体移出屏幕,而在动画结束后,物体回归到原点。【↑挂载到animator上的组件】
2022-08-15 13:39:12
2415
原创 Unity问题合集
目录细节1:监听事件居然有顺序?细节2:StopCoroutine并不能停止协程?细节3:实例化instance的脚本需要挂载到场景中的物体中,不然无法调取细节4:GetComponentsInChildren获取不到隐藏物体?细节5:Animator窗口的状态机没有进度条细节6:动画自动播放/播放了不正确的动画细节7:运行失败,可能是因为脚本忘记挂载到物体上细节8:两个模型动画不同步/播完后有延迟细节9:Button等组件的Target Graphic可能设置错误
2022-08-12 14:09:43
1494
原创 「unity技巧」快捷键
简单的就不说了1.隐藏显示object:alt+shift+A2.展开选中物体层级:ait+→收起选中物体层级:ait+←3.播放:ctrl+P 暂停:ctrl+shift+P 逐帧播放:ctrl+shift+P4.对选择物体拉近到最近距离:F5.重命名:F26.选中窗口放大缩小:ctrl+空格 菜单栏已有说明的快捷键 解释:ctrl+R:刷新场景............
2022-07-08 10:57:48
6909
原创 【unity脚本】如何调用其它脚本中的枚举
问题:想调用枚举类型,修改变量值,但无法像正常变量一样调用解决方法(示例):拓展:调用其它脚本中变量/函数的方式1.设置静态变量/函数如:2.调用public或private变量/函数3.调用public变量......
2022-07-07 14:02:47
1207
原创 【Unity BUG】FPS相机视角穿墙/透视墙壁
问题描述:官方自带的第一人称相机/透视墙壁解决原理分析:视角穿墙,说明是裁剪距离的问题。因为裁剪距离太远,所以会切割模型,出现墙的内部。解决方式:1.找到FPS相机 2.将near调成合适的数值,一般调成0.1足够...
2022-07-06 10:34:15
2021
原创 「unity技巧」如何查找脚本挂载在哪个物体(组件)上?
这是场景。我们要找的脚本:在Hierarchy窗口中输入要找的脚本名称。 结果出现。
2022-07-05 17:46:51
10127
原创 【unity】每日功能一练
1.功能:物体一直旋转【DOTWEEN】代码:参考资料:Unity_Dotween_让游戏物体或者UI平移_旋转_缩放_黑狗向前跑的博客-优快云博客_dotween ui旋转Unity 基础 之 DoTween 简单处理旋转 360 度为什么没有反应的情况_仙魁XAN的博客-优快云博客_dotween旋转360度Dotween 使用DOLocalRotate循环旋转 360度_digdugbomb的博客-优快云博客_dotween 循环旋转 1.功能:遍历场景中的所
2022-07-05 00:13:03
344
原创 「Unity笔记」日记
目录「已阅读」1.获取屏幕当前宽高2.获取UI宽高3.取绝对值「未阅读」一、博客二、资源-7.1-参考:https://docs.unity3d.com/ScriptReference/Screen.html首先,使用GetComponent().sizeDelta获取,但是这样会有问题,会跟锚点设置有关,改变设置后获取不对只适用于MiddleCenter所以又看了API,可以使用GetComponent().rect获取打印如下:C# 中取绝对.....................
2022-07-01 08:54:51
266
原创 「Unity研究」
目录一、if retrn二、数组、list相关1.为什么要实例化list?2.实例化数组不成功? 1.isbool = true;结果:控制台无“yes”2.isbool = false; 新增Debug.Log("NO"); 无“NO”,说明if return只会运行接下来的一段代码。参考文献:js里if()return 的用法理解?_WSH_M的博客-优快云博客_if(xxx) return if return 语句_新手出炉的博客-优快云博客_if return语句List.....
2022-06-30 17:23:28
195
原创 Unity BUG合集(更新中)
这个问题出现的原因是因为没有更新包管理器中的包,我们在window窗口中找到Package Manager然后观察有哪个地方没有绿色勾勾,然后点进去,Update一下就解决了。看来是Sequence()使用了get_isPlaying(),而get_isPlaying()不能在类中直接使用,所以报错。解决方法二:在任务管理器中结束Unity Editor任务,然后在HUB中尝试打开。原因:方法不可以连续嵌套(详细原因正在探究中,现在只发现方法的值不可以嵌套传递)实验了一下,只是定义不使用也会报错。
2022-06-28 15:50:14
1131
怎样让视频停在第一帧?
2022-11-17
为什么C不用指针的话,调用会出问题,而其它语言不会?
2022-09-08
Unity中的FormerlySerializedAs无法使用
2022-08-30
Unity中,如何解决点击空白区域后button取消选中状态?
2022-08-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人