C#和Unity学习笔记

这篇博客详细介绍了C#和Unity开发中的数据类型,包括值类型与引用类型的区别,以及栈和堆的内存管理。讨论了值类型和引用类型的存储速度、垃圾回收机制。此外,还探讨了C#中的数据结构,如数组、ArrayList、List和LinkedList的优缺点。博主还深入讲解了字符串和StringBuilder的使用,以及游戏物体查找方法和组件访问方式。博客中还涉及了委托、事件、虚函数、抽象类与接口的区别,以及热更新和XLua在Unity中的应用,包括自定义loader和Lua虚拟机的使用。最后,博主分享了Unity学习资料和内存管理的优化技巧,强调了内存池技术的重要性以及在Unity中减少Draw Calls和优化纹理的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.23
数据类型:
值类型:普通类型(整型,浮点型,布尔型,结构体,枚举)
引用类型:String,字符串,数组,类
引用类型:1.数据的内存(堆区)2.这段内存的引用(地址)
区别:
1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而数据的引用存在内存栈中。
2.栈空间小值类型存储速度快,堆空间大引用类型存储速度慢。
3.值类型系统自动回收,引用类型有垃圾回收机制(GC)回收。垃圾回收机制:当堆区内存无人使用时则回收。
4.值类型继承与System.ValueType,引用类型继承于System.Object
值类型在进行参数传递时为值传递,引用类型我引用传递。 ref:加在实参和形参前面 out:从函数中带出值(在函数中给实参赋值) c#的所有变量字使用前都必须赋值,除out修饰的实参外。
out用法示例(构建射线):
Ray ray = new Ray();
RaycastHit hitInfo;
if(Physic.Raycast(ray,out hitInfo,Mathf.Infinity))
{
//do someting;
}

Invoke(函数名,时间) 相隔多久调用某个函数(只会调用一次)
InvokeRepeating(函数名,第一次调用前等待的时间,相隔多久调用一次):重复调用
isInvoking 是否正在调用
CancelInvoke():取消所有函数的调用
CancelInvoke(String methodName);取消某个函数的调用

c#中的数据结构:
1.数组:缺点大小固定,内存连续,不方便添加删除;
int [][] map = new int[10][10];//定义了一个十行十列的二维数组。
2.ArrayList:数组列表
特点:1.内存连续,可以通过下标访问(this[int index]) 2.大小不固定 3。可以存储不同数据类型的数据。
缺点:频繁的装箱拆箱影响效率 装箱:将值类型转化为引用类型的过程 拆箱:将引用类型转化为值类型的过程
ArrayList arrlist = new ArrayList(); arrlist.Add();//添加元素 arrlist.Remove();//移除元素 int i = (int)arrlist[0];//拆箱
3.List列表
特点:1.内存连续,可以通过下标访问 2.大小不固定 3.只能存储相同数据类型
缺点:不方便添加删除
4.LinkedList:双向链表
特点:1.内存不一定连续,不可以通过下标访问 2.大小不固定 3.只能存储相同数据类型
缺点:不方便访问元素、

7.24
1.String和StringBuilder
String:字符串类(引用类型,在堆上分配内存);做=、+=、-=运算时产生临时的对象保存&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值