- 博客(48)
- 问答 (1)
- 收藏
- 关注
原创 c#万物之父装箱拆箱
关键字 objectobject是所有类型的基类,他是一个类(引用类型)作用可以利用里氏替换原则 ,用object容器装所有对象可以用来表示不确定类型 作为函数参数类型。
2026-02-24 11:56:35
411
原创 c#里氏替换
里氏替换原则是面向对象七大原则中的重要的要则概念任何父类出现的地方 ,子类都可以替代重点语法表现 父类容器装子类对象,因为子类对象包含了父类的所有内容作用方便进行对象存储和管理。
2026-02-23 07:45:30
549
原创 c#继承的原则
一个类A继承了一个类B类A将会继承类B的所有成员类A将拥有B类的所有特征和行为被继承的类称为 父类 基类 超类继承的类称为子类 派生类子类可以有自己的特征和行为特点单根性 子类只能有一个父类传递性 子类可以间接继承父类的父类。
2026-02-22 23:18:12
70
原创 c#运算符重载
让自定义类和结构体 能够使用运算符使用关键字 operator特点一定是一个公共的静态方法 返回值写在operator前 逻辑处理自定义条件运算符需要成对实现一个符号可以多个重载不能使用ref和out。
2026-02-22 10:36:10
49
原创 c#静态类和静态构造函数
用static修饰类只能包含静态成员不能被实例化将常用的静态 成员写在静态类中 方便使用静态类不能被实例化,更能体现工具类的唯一性适合做工具类。
2026-02-20 07:11:07
476
原创 c#成员属性
加的访问修饰符要低于属性的访问权限 也就是public int Money要高于get和set前的访问修饰符。属性可以让成员变量在外部设置读取的属性 属性的命名 帕斯卡命名方法。get 和set的值要和属性类型一致 都是Name的string类型。如果类中有一个特征只是希望外部能得但不能改的,而且没有特殊处理。不能让get和set的访问权限都低于属性权限。为成员属性的获取和赋值添加逻辑处理。属性的命名 帕斯卡命名方法。vlaue关键字用于表示外部传入的值。默认不加 会使用属性声明的访问权限。
2026-02-18 22:24:47
238
原创 c#类的构造函数和析构函数
当自己不实现无参构造函数 而实现了有参构造函数,会失去默认的无参构造函数。在实例化对象时,会调用的用于初始化的函数,如果不写构造函数,默认存在一个无参构造函数。语法上,有返回类型的方法会被编译器当作普通方法处理,无法起到构造函数的作用。语义上,构造函数不负责返回值,而是完成初始化,对象引用由 new 提供。执行顺序是先调用无参,再调用this对应的有参,最后执行 这个构造函数。当自己不声明构造函数时,默认的构造函数是无参的。访问修饰符,构造函数名(参数列表):this(参数1,参数2)
2026-02-18 13:25:08
982
原创 c#封装成员变量和成员方法和访问修饰符
声明在类语句块中用来描述对象的特征,可以是任意变量类型数量不做限制,是否赋值根据需求来决定。如果在类中声明一个和自己相同类型的成员变量时,不能对他进行实例化。//不能== new Person();,不能实例化,会内存溢出。
2026-02-16 08:22:37
504
原创 c#选择排序
套路写法 两层循环 外层轮数 内层寻找 初始索引 记录极值 内层循环外交换。新建中间变量,依次比较,找出极值,放入目标位置,比较n轮。
2026-02-14 12:32:01
114
原创 c#函数重载
ref 和out也是改变参数类型的手段 但ref和out是同样的重载效果,只能存在一个。作用,命名一组功能相似的函数 ,减少函数名的数量,避免命名空间的污染。参数数量不同或者参数数量相同,但参数的类型或顺序不同。重载和返回值类型无关,只和参数类型,个数,顺序有关。params也是一种,可选参数不是。
2026-02-11 23:32:34
214
原创 c#变长关键字和参数默认值
params int[ ]意味着可以传入n个int参数 ,n可以为0,传入的参数会存在arr数组中。函数参数中只能最多出现一个params关键字,并且一定在最后一组参数 ,前面可以有n个其他参数。作用是 当调用函数时可以不传入参数 ,不传就会使用默认值作为参数的值。函数参数可以有别的参数和param关键字修饰的参数。如果要混用, 可以选参数 必须写在普通参数后面。支持多参数默认值,每个参数都可以有默认值。有参数默认值的参数,一般为可选参数。params 关键字后必须为数组。数组类型可以为任意类型。
2026-02-11 16:28:25
42
原创 C#的函数
函数写在class语句块或者struct语句块中static 返回类型 函数名(参数类型 参数名1,参数类型,参数名2)函数的代码逻辑return 返回值,有返回类型才写 可以任意类型包括类 结构体 枚举关于函数名 使用帕斯卡命名发命名,参数名用驼峰。myName(驼峰命名) MyName(帕斯卡命名发)参数不是必须的 可以有0到n个参数 参数类型也是任意类型 多个参数 逗号隔开返回值类型不为void时,必须通过return返回对应类型的内容。
2026-02-09 21:08:13
65
原创 c#二维数组
变量类型 [,]二维数组变量名 = new[行,列];变量类型 [,]二维数组变量名 = new[行,列]{{}{}{}};变量类型 [,]二维数组变量名 = new[,]{{}{}{}};根据实际内容确定几行几列变量类型 [,]二维数组变量名 = {{}{}{}};
2026-02-08 17:27:03
20
原创 c#一维数组
变量类型[ ] 数组名 声明了一个数组,但未赋值,内存没空间变量类型[ ] 数组名 = new 变量类型[数组的长度] 有空间,默认都为0变量类型[ ]数组名= new 变量类型[数组长度]{内容1,内容2} 有空间,自定义赋值变量类型[]数组名= new 变量类型[ ]{内容1,内容2} 有空间,自定义赋值 数组长度为赋值个数变量类型[]数组名={内容1,内容2}
2026-02-07 10:15:07
568
原创 C#枚举enum
定义:枚举是被命名的整形常量的集合作用:一般用他来表示 状态或者 类型在namespace语句块(这个常用) class语句块或 struct语句块中声明 函数中不能声明注意 申明枚举和 声明枚举变量是两个概念声明枚举 相当于创建一个自定义的枚举类型声明枚举变量 使用声明的自定义枚举类型 创建一个枚举变量。
2026-02-07 00:08:31
284
原创 Unity学习笔记(十八)GUI控件(二)
普通输入 inputStr 为默认的显示内容, 10为最大输入长度 可自定义。ScaleToFit 会自动根据宽高比进行计算,不会拉变形,会一直保持图片完全显示的状态。nowValue的值从0到1变化 不传值不变化 要nowValue=ScaleAndCrop:也会通过宽高比来计算图片,但是 会进行裁剪。xCount代表 水平方向最多显示的按钮数量。帮助我们根据不同的返回所 来处理不同的逻辑。可以理解为包裹着的控件加了一个父对象。可以通过控制分组来包裹控件的位置。密码输入 用*号替换密码密码。
2025-12-15 14:38:09
501
原创 Unity学习笔记(十七)GUI控件(一)
style 自定义文字样式Rect的宽高会改变图片显示的大小,而且是按图片等比例放大的综合使用 同时显示 文字和图片获取当前鼠标或者键盘选中的GUI控件 对应的tooltip信息。
2025-12-14 16:22:57
646
原创 Unity学习笔记(十五)音效及麦克风
潜在点 :一个GameObject可以挂载多个音效脚本 要管理他们,超过录制长度后 是否重头录制;那么就可以在Updated生命周期函数中不停的去检测 它的该属性。停止暂停和 暂停后播放的效果是一样的 都会继续播放现有的音效。控制他们的播放 停止 不然我们没有办法准确的获取。1直接在要播放音效的对象上挂载该脚本 控制播放。3用一个AudioSource控制播放不同音效。2实例化挂载了音效源脚本对象 用的比较少。希望一个音效播放完毕后 想要做什么事情。false代表播放完毕。
2025-12-12 09:47:15
412
原创 Unity学习笔记(十四)刚体加力
v = 10 * 1 / 2 = 5m / s 每物理帧移动5m / s * 0.02 = 0.1m。每物理帧移动0.2m / s * 0.02 = 0.004m。每物理帧移动0.1m / s * 0.02 = 0.002m。给物体添加一个瞬间的力,与物体的质量有关 忽略时间 默认为1。每物理帧移动10m / s * 0.02s = 0.2m。F(0,0,10) t默认为1 m:2kg。给物体增加一个持续的力,与物体的质量有关。给物体增加一个持续的加速度 ,忽略其质量。t默认为1,时间默认1。
2025-12-12 09:08:15
277
原创 Unity学习笔记(十三)碰撞检测
接触时触发 自动执行这个函数碰撞到的对象碰撞器的信息碰撞对象的依附对象碰撞对象的依附对象的位置信息触碰点数相关接触点 具体的坐标只要得到了碰撞到的对象 任意一个信息 就可以得到它的所有信息碰撞结束分离时,会自动执行函数两个物体相互接触摩擦时,会不停调用改函数。
2025-12-11 22:47:42
1237
原创 Unity学习笔记(十二)碰撞中的刚体和碰撞器
2物理材质参数 Dynamic Friction 已在移动时使用的摩擦力,0-1之间的值,为0 像一样冰光滑,为1对象迅速静止。Static Friction 当对象静止在表面上使用的摩檫力,通常为0-1之间的值,为0 像一样冰光滑,为1对象很难移动。5.Angular Drag 根据扭矩旋转对象时影响对象的空气阻力大小,0表示没有空气阻力。如果勾选, 不会碰撞。3.Drag空气阻力 根据力移动对象时影响对象的空气阻力大小。3. Material 物理材质 可以确定碰撞体和其他对象碰撞时的交互方式。
2025-12-11 22:36:20
409
原创 Unity学习笔记(十)Camera
之所以改变z轴 是因为 如果不改 z默认为0,转换过去的世界坐标的点 ,永远都是一个点 可以理解为视口相交的焦点。如果改变了Z 那么转换过去的 世界坐标的点 就是相对于 摄像机前方多少的单位的横截面上的世界坐标点。转换过后 x和y对应的就是屏幕坐标 z对应的就是 这个3D物体 里我们的摄像机的距离。获取主相机,摄像机Tag需要为main Camera。我们会用这个来做的功能最多的就是头顶血条相关的功能。Camera界面上的参数都可以代码获取设置。摄像机剔除前处理的委托函数。摄像机 渲染后 处理的委托。
2025-12-09 22:43:29
318
原创 Unity学习笔记(十一)Light
Indirect Mutiplier 改变间接光强度 低于1 每次反弹会使光变暗 大于1 每次反弹会使光更亮 一般不调整。SkyBox 天空和材质作为环境光颜色,Gradient 可以为天空, 地平线单独选择颜色。Ambient Mode 全局光照模式 只有启用了实时全局和全局烘焙才有用。Flare 耀斑 Game窗口里要看到耀斑,要在Camera中加入耀斑脚本。RealTime 实时光源 每帧实时计算 可以动态变化。Near Panel 渲染阴影的近裁剪面 一般不调整。
2025-12-09 20:45:09
242
原创 Unity学习笔记(九)Screen及父子关系
窗口当前宽高 是当前game窗口的宽高一般写代码 用窗口宽高 ,做计算屏幕休眠模式两种模式运行时是否全屏静态方法设置分辨率bool为是否全屏父子关系获取和设置父对象获取父对象设置父对象把父对象置空 并重新安排一个父对象API设置参数一父亲对象,参数二 是否为世界坐标的位置,角度,缩放信息, bool值true保持世界坐标不变(位置、旋转、缩放)子物体在世界空间中的位置、旋转和缩放不会改变Unity会自动计算相对于新父级的局部变
2025-12-08 11:50:19
548
空空如也
python 导入包出错
2022-04-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅