- 博客(14)
- 问答 (1)
- 收藏
- 关注
原创 Unity中Awake和Start的执行时机及区别
是脚本实例化时调用的,场景中未激活的物体,在游戏开始时是不会被加载以及实例化的,因此物体身上的脚本也不会被实例化。方法动态创建时,Unity 会实例化该物体上所有脚本。如果一个场景中的物体没有被激活(即。),Unity 会实例化该物体上所有脚本。用于初始化不依赖其他对象的变量或组件。用于初始化依赖其他对象或组件的操作。适合在游戏启动时执行一次的操作。适合在游戏正式开始前执行的操作。当一个场景被加载时,场景中所有。在脚本启用后,且在第一次。调用,无论脚本是否启用。),那么它身上脚本的。)上的脚本会被实例化。
2025-03-03 19:26:57
402
原创 Unity UGUI Button 点击失效的常见原因及解决方法
如果检测到一个 Graphic 元素(包括 Button 的子物体上的 Image),则会通知该元素的父对象处理点击事件。因此,即使 Button 本身没有挂载 Image,但子物体上的 Image 捕获了射线,它的点击事件会传递到 Button。将物体的本地缩放值的 X 轴设为负值(-1),会导致物体在 X 轴方向上 镜像翻转。这样的视觉效果与旋转 Y 轴 180 度一样,但可以保持法线方向不会改变,仍然保持面向摄像机,因此射线检测正常工作。的点击事件需要一个可以被射线检测到的图形元素(
2025-01-15 11:38:31
553
原创 C# 委托的原理以及与Unity对象生命周期的关系
在 C# 中,delegate)是一种类型安全的函数指针。它本质上是一个对象,封装了对方法的引用。
2024-12-12 23:12:09
263
原创 为什么 IList<IList<int>> 不等于 List<List<int>> ?
CS0266:无法将类型"System.Collections.Generic.List”隐式转为"System.Colections.Generic.list"。对于 IList list = new List();接口,但泛型类型参数在赋值时必须完全匹配。的实现类,但泛型不支持隐式转换。
2024-11-18 23:24:10
316
原创 C#中const readyonly static的区别
定义const关键字用于定义编译时常量,即在编译时就必须确定其值,且值不可改变。const字段的值在整个程序的生命周期内保持不变。存储位置:常量通常存储在程序的元数据中,它们会直接内联到使用它们的代码中,因此在多个地方引用同一个常量时,编译器会将常量值直接插入到代码中,不会分配内存来存储这个常量。初始化时机const字段必须在声明时进行初始化,且只能使用编译时常量来初始化。这意味着它只能使用数值、字符串等基本类型来赋值,而不能使用运行时计算的值。修饰范围const字段隐式是static。
2024-10-16 10:42:04
1042
1
原创 C#中的多维数组([ , ])与交错数组([ ][ ]):性能与应用场景的对比
多维数组是一个规则的矩阵结构,行和列的数量是固定的。每一行都必须有相同的列数,构成一个矩形矩阵。交错数组是数组的数组。交错数组的每一行都是一个独立的数组,所以各行可以有不同的长度。
2024-10-08 14:34:35
690
原创 学习C# 引用传递与ref关键字:与 C++ 的对比分析
在 C# 中,方法参数的传递方式是一个重要的概念,尤其是在处理引用类型时。尽管引用类型的对象是通过引用传递的,但传递的实际上是引用的副本。我原本认为,这不是引用类型吗,传递的是引用啊,我修改了引用的指向,那么原对象的信息应该会交换啊?存储的是对象的内存地址,指向该对象在堆中的实际数据。当你传递一个引用类型的对象时,传递的是这个对象的。如果你修改引用所指向对象的属性,由于两个引用指向同一个对象,所以这些修改会影响到原对象。同理,在C++中传递指针时,也是类似的,传递的是指针的副本而非原始的指针。
2024-09-23 23:44:03
256
原创 Unity中销毁和禁用对Invoke和协程的调用的影响
在 Unity 开发中,我们经常需要在游戏对象的生命周期中进行一些异步操作,比如使用Invoke延时调用方法,或启动协程来处理复杂的逻辑。然而,当游戏对象被销毁或禁用时,这些操作会如何表现呢?和和,并深入探讨它们对Invoke和协程执行的影响,以及如何避免由此引发的潜在问题。通过这些案例分析,你将更清晰地理解 Unity 中对象的生命周期管理,帮助你在项目中更有效地控制异步操作的执行。
2024-09-11 15:39:01
1396
原创 Unity中屏幕坐标转世界坐标ScreenToWorldPoint()时z轴的设置
值为0,转换后的坐标始终是摄像机的坐标。下,转换屏幕坐标到世界坐标时,
2024-08-06 23:13:15
1067
1
原创 Unity使用多屏幕Display以及不同屏幕的射线检测
因为对于每一小块屏幕来说,分辨率是1920x1080,因此需要减去第一块屏幕的宽度,即pos - new Vector2(Display.displays[0].systemWidth,0),也就是说(960,540)才是我要传给camera.ScreenPointToRay(pos)的值。在window显示设置中,我的两块屏幕是按照扩展模式且左右连接的,那么在这种情况下,最终游戏运行时合成的一个大屏幕的分辨率是3840 x 1080(两块小屏幕都是1920 x 1080)。
2024-08-06 17:56:15
1225
1
原创 编译时的内存分配
编译时内存分配主要是指在程序编译阶段,由编译器为程序中的各种静态数据分配内存空间。这些静态数据包括全局变量、静态变量、常量等。这些内存分配在编译时就已经确定,在程序加载到内存后,这些内存空间会被操作系统分配并初始化。
2024-06-26 00:11:43
588
原创 踩坑,C#和Java中的substring参数
Java的substring()方法中的第一个参数是开始索引,第二个参数是结束索引。C#的Substring()方法中的两个参数,第一个是开始索引,第二个是长度。
2024-06-12 01:47:01
376
原创 C#中静态变量,静态构造函数,普通变量,普通构造函数的执行顺序。
静态构造函数(Java中是静态代码块):静态构造函数在静态变量和静态代码块执行完毕之后执行。静态构造函数只在类第一次被加载时执行一次。普通构造函数:普通构造函数在普通变量初始化之后执行。每次创建类的实例时都会执行一次普通构造函数。静态变量:静态变量在类第一次被加载时初始化。这是在任何静态构造函数或静态代码块执行之前完成的。普通变量:普通变量在每次创建类的实例时初始化。这是在普通构造函数执行之前完成的。普通构造函数执行(每次创建实例时)普通变量初始化(每次创建实例时)
2024-06-08 02:41:11
429
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人