- 博客(15)
- 收藏
- 关注
原创 Unity之协程(Coroutine)
协程与线程、进程不同,协程的上下文切换是由程序员决定的,在开启协程后可以暂停协程执行,暂停之后会返回主函数(开启协程所在的函数),执行主函数剩余的部分,直到中断指令完成后,从中断指令的下一行继续执行协程函数的剩余部分,函数体执行完,协程即结束。yield return new WaitForSeconds(float time)//协程在延迟指定时间后且当前帧所有脚本的update全部执行完后才会继续执行 且当timescale=0,是不会执行。//当前帧所有Fixedupdate执行完后执行”
2024-07-02 21:13:10
567
1
原创 Unity基础之Input类详解
如果设置输入或查看axisName的选项 可以在Edit->ProjectSetting->input 可以调出InputManager,然后展开Axes可以查看当前输入的列表,可以选择其中一个转为axisName。此值的含义取决于输入控制的类型,例如,对于游戏杆的水平轴,值为 1 表示游戏杆向右推到底,值为 -1 表示游戏杆向左推到底;Input.GetKeyDown(KeyCode key) 在按下指定按键的那一帧返回true。Input.anyKey 按下任意键都会返回true。
2024-06-14 12:51:28
1311
原创 Unity之Clamp(限制取值范围)与Lerp(插值运算)
限制在范围 [0, 1] 内。这最常用于查找占两个终端之间距离特定百分比的点。// value: //需要限制的值。// min: //最小。// max //最大。Material.Lerp //俩材质球之间。Vector.Lerp //俩向量之间。Lerp:在两个点之间进行线性插值。返回 a + (b - a) * t。Mathf.Lerp //俩数值之间。Color.Lerp //俩颜色之间。
2024-05-30 21:16:52
1287
原创 Unity之射线(Ray)
射线顾名思义是一个点向一个方向发射的一条无终点的线,在发射过程中可以与其他物体碰撞。Raycast与RayCastAll的的重载函数有很多这里各写一种(简单使用)Raycast只检测射线第一个碰到的物体(检测的前提是游戏物体上带有碰撞体)这个类是用来存储射线所碰到的物体的对象的信息的。RaycastAll检测射线上碰到的所有物体。
2024-05-28 16:33:54
565
原创 C#之泛型与单例
值类型约束:where T:struct (在C#中struct表示值类型,而在C++中struct表示结构体)泛型派生 where T:U 表示T和U必须是同一类型或者是他的派生类型。泛型编程是增强程序功能的技术,合理的使用泛型编程可以最大程度的复用代码。接口的派生 where T:接口名 表示T必须是指定接口的派生。类的派生where T:类名 表示T必须是指定类的派生类。泛型类、泛型方法,泛型接口,泛型委托、泛型事件等等。引用类型约束:where T:class。
2024-04-23 13:35:08
717
原创 C#之委托与事件、匿名函数与lambda表达式
事件指的是用户的一个操作,例如按键,鼠标点击,鼠标移动,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。匿名方法是没有名称只有主体的方法,同时匿名方法不需要返回值类型,匿名方法的返回值类型是根据主体中return语句来推断的。2.多播委托是有执行顺序的,大体上表现为先+=的委托先执行,后加减的委托后执行。1.将许多相同类型的委托合并在一起,通过+=合并一个委托,-=撤销一个委托。C#中委托与c++中的函数指针类似,是存有对某个方法引用的引用类型。事件是基于委托的,是委托的一种签名。
2024-04-20 20:20:16
890
原创 C#之静态类、抽象类与密封类、抽象类与接口、字符串
2.静态类的内存存放在静态全局区,静态全局区的内存是在整个程序结束时释放的,如果我们使用一个类来继承一个静态类,那么派生类被释放时会调用基类的析构函数,则会提前释放静态的内存,这种情况是不被允许的,因此。答案是肯定的,使用static修饰一个普通类的构造函数是C#中特有的,静态构造函数不能带有参数与访问权限修饰符,同时一个类只能有一个静态构造函数,并且不能被显式的调用。4.继承接口的类必须实现接口中的所有成员,如果一个类继承了多个接口,那么这个类需要实现这些接口的所有成员。
2024-04-19 18:55:23
556
原创 C# 面向对象之封装与多态详解
同时我们把类的一系列行为放入一个个函数中,在需要时调用相应的函数即可,在外部只能看见我们函数的执行,而不是直接看见代码,也降低程序的耦合。多态就是同一行为的不同表现形式,不同派生类对象对来自基类的同一方法(行为)的重写,使不对派生类对象对这一行为的具体实践不同。在C#中,我们用类来抽象某一具体的事物,那么这是事物本身会具有一些属性和一些行为。即运行时多态 在程序运行时判断所引用的实际类型,根据具体的类型来调用相应的方法。继承了抽象类的派生类必须实现派生类中用abstract修饰的方法。
2024-04-18 23:33:46
414
原创 C# 面向对象之继承详解
在子类中可以使用base调用父类的方法 也可以在子类构造函数的初始化列表调用父类的构造构造函数,但是在静态类中不能使用base。继承关系需要符合逻辑不能为了继承而继承,只有当一个类在逻辑上属于另一个类时(老虎属于动物,树属于植物)继承就是合理的。在子类中此方法将覆盖从父类中继承过来的同名方法 但是不会改变父类中的同名方法。但new还有另一个用法:用于修饰子类中与父类重名的方法表示覆盖。继承就是子承父业,子类继承父类的字段(数据成员)和方法。同时一个类只能有一个父类 即单继承类。overide与new。
2024-04-17 21:51:57
175
1
原创 C# out与ref
2、在函数体中,程序不一定需要对ref的值进行改变 out必须在函数体中重新赋值。1、使用ref时传入参数必须要初始化 out可以不用初始化。out与ref都是址传递,执行方法后原来的值会改变。
2024-04-17 19:05:53
244
1
原创 C# foreach
foreach与for、while等关键字一样都是定义循环语句的。简洁 不需要给初始值、步长,结束条件,会自动遍历集合中的所有值。foreach语法相对for。foreach效率比for高。不关心数组的长度与起始下标。foreach是只读类型。会造成额外的gc开销。
2024-04-17 18:29:52
310
1
原创 C#面向对象
动态多态:不同派生类的对象对同一方法的不同实现(同一事物的不同表现形式),由派生类重写/实现基类的virtual/abstract方法。使用一个基类的指针,如果指针指向的是一个派生类的对象则调用派生类的方法。继承:派生类继承基类的非private字段和方法,派生类可以对基类的对基类的virtual或abstract方法进行重写。封装:是指将具体的实现过程和数据封装成一个函数,只能通过指定的接口进行访问,降低程序的耦合。对象是只一个具体的事物,这个事物的抽象就是类。
2024-04-16 20:38:54
131
1
原创 C#值类型和引用类型
值类型:直接存储数据int short long double float bool struct等等。4.值类型继承自system.valuetype,引用类型继承自system.object。引用类型:数据的引用(地址),数据存放在堆区,class 委托 事件等等。3.值类型表示的是实际的数据,引用类型表示的是一个指向堆区的地址。1.值类型数据存储在栈区,引用类型数据存放在堆区。5.栈区的内存是自动释放的,堆区的内存有GC回收。2.值类型存取速度快,引用类型存储数据慢。值类型与引用类型的区别。
2024-04-16 20:10:06
149
1
原创 C#访问权限修饰符
默认访问权限:类的默认访问权限internal 成员的默认访问权限:private。protected:可以在当前程序集类中和子类中访问。public:可以在任意程序集(项目中访问)internal:可以在程序集类中和类外访问。private:只能在内中访问。
2024-04-16 16:36:05
180
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人