US3S8L2——天空盒
US3S8L2——天空盒 天空盒 天空盒(Skybox)是计算机图形学和三维游戏开发中常用于模拟背景的一种方式,它通常由一个立方体构成 字面上理解就是一个用于模拟天空的盒子(但是它不仅可以模拟天空,模拟室内等环境也是可以的) 在游戏场景中使用天空盒时,整个场景就被包围在了一个立方体中。这个立方体的每个面使用的技术就是立方体纹理技术。 它给我们带来的主要好处是: 可以创建逼真的背景 天空盒使场景看起来更加逼真,因为它可以展示复杂和详细的背景 可以提高性能 可以减少渲染远景所需的消耗,只需要纹理贴图就可以模拟远景的效果,而无需实际的在远处创建这些物体 全景视图 天空盒的六个面(前、后、左、右、上、下)共同构成一个完整的环境,无论玩家向哪个方向看,都能看到连贯的背景图像 易于实现 对于开发者来说,制作和应用天空盒相对简单,只需要准备好六个方向的纹理图像,并将它们应用到立方体纹理中即可 等等 通过天空盒来感受立方体纹理的作用 在Unity当中使用天空盒非常的简单,我们无需写任何代码就可以使用天空盒 第一步:创建天空盒材质球 创建一个材质球 将其...
CS4L24——值类型和引用类型补充
CS4L24——值类型和引用类型补充 知识回顾 在C#中,所有的变量类型都会分为值类型和引用类型,分类如下: 值类型 无符号:byte,ushort,uint,ulong 有符号:sbyte,short,int,long 浮点数:float,double,decimal 特殊:char,bool 枚举:enum 结构体:struct 引用类型 string 数组 interface class 委托 查看值类型还是引用类型 两者的本质区别,值类型在栈内存上,引用类型在堆内存上 按 F12 可以进一个类型的内部查看,是 class 就是引用类型,struct 就是值类型 语句块 12345678910命名空间{ 类、接口、结构体 { 函数、属性、索引器、运算符重载等(类、接口、结构体) { 条件分支、循环等 } ...
CS4L23——特殊语法
CS4L23——特殊语法 本章代码关键字 12345678910var // 隐式类型,用于声明临时变量,编译器会根据=右边的值的类型来判断变量是什么类型的,而不需要再指定变量类型new() // 在已知变量类型的情况下,使用new实例化对象时可以直接省略掉new关键字后面的类型? // 可空类型Nullable<> // 可空值类型的包装nullable<>.HasValue // 检查可空值类型是否为nullnullable<>.GetValueOrDefault() // 安全获取可空值类型值,如果为值为空,返回默认值类型的默认值,如果此时还传入了参数,会返回传入的参数?. ...
CS4L22——迭代器
CS4L22——迭代器 本章代码关键字 12345IEnumerable // 可迭代接口,需要实现返回迭代器IEnumerator的方法IEnumerator // 迭代器接口,内部维护一个光标来迭代获取其中的元素IEnumerable<T> // 可迭代泛型接口,需要实现返回迭代器IEnumerator<T>的方法,可以限制foreach迭代的变量类型IEnumerator<T> // 迭代器泛型接口,内部维护一个光标来迭代获取其中的元素,迭代的类型被泛型约束yield return // 返回值为IEnumerator的方法可以使用的语法糖,相当于返回一个值后挂起函数,再次执行函数时会从上次yield...
CS4L19——预处理器指令
CS4L19——预处理器指令 本章代码关键字 12345678910#define // 定义一个符号#undef // 取消定义符号// 配合定义的符号进行条件编译#if#elif#else#endif#warning // 向编译器发出警告#error // 向编译器报错,使编译不通过 编译器 编译器是一种翻译程序,它用于将源语言程序翻译成目标语言程序 源语言程序:某种程序设计语言写成的,比如 C#、C、C++、Java 等语言写的程序 目标语言程序:二进制数标识的伪机器代码写的程序 编译器就会将我们编写的 .cs 源代码文件编译为 .exe 或者 .dll 等可执行程序 预处理器指令 预处理器指令 指导编译器 在实际编译开始之前对信息进行预处理 预处理器指令 都是以 # 开始,预处理器指令不是语句,所以他们不以分号 ; 结束 常用的折叠代码块 就是 预处理器指令 常见的预处理器指令 定义符号 #define #define:定义一个符号,类似于一个没有值的变量,必须写在写在脚本文件的最前面,一般配合...
CS4L18——多线程
CS4L18——多线程 本章代码关键字 1234567System.Threading // 线程相关命名空间Thread // 线程thread.Start() // 开启线程thread.IsBackground // 设置线程为后台线程,当主线程执行完毕时,后台线程会被自动关闭thread.Abort() // 中止线程,此方法已废弃,不建议使用Thread.Sleep() // 让线程休眠一段时间(传入的单位是毫秒)lock() {} //...
CS4L17——协变逆变
CS4L17——协变逆变 本章代码关键字 12out // 协变,它修饰泛型委托和泛型接口的泛型参数,使得此泛型参数只能作为返回值in // 逆变,它修饰泛型委托和泛型接口的泛型参数,使得此泛型参数只能作为参数 协变和逆变 协变:和谐的变化,自然的变化 因为 里氏替换原则 父类可以装子类,所以 子类变父类,比如 string 变成 object,感受是和谐的 逆变:逆常规的变化,不正常的变化 因为 里氏替换原则 父类可以装子类 但是子类不能装父类,所以 父类变子类,比如 object 变成 string,感受是不和谐的 协变和逆变是用来修饰泛型的: 协变:out 逆变:in 用于在泛型中 修饰 泛型字母的。只有 泛型接口 和 泛型委托 能使用 它的作用主要是: out 修饰的泛型类型,只能作为返回值类型,in 修饰的泛型类型 只能作为 参数类型 遵循里氏替换原则的 ,用 out 和 in 修饰的 泛型委托...
CS4L16——List排序
CS4L16——List排序 本章代码关键字 1234list<>.Sort() // List的排序方法IComparable<> // 自定义类继承此接口并实现方法后,其List<>即可直接Sort()CompareTo() // IComparable<>需要实现的方法Comparison<> // 参数为两个待比较的同类型对象,返回值为int类型排序结果的委托,可以传入到Sort()内,即可直接使用排序方法 List 自带排序方法 List<> 自带了 Sort() 方法,排序结果默认是升序的,ArrayList 中也有 Sort 排序方法 系统自带的变量(int,float,double…)一般都可以直接 Sort 123456789101112131415161718List<int> list = new List<int>() { 3, 2, 6, 1, 4, 5 };string info =...
P1L14——【git版本管理】版本回滚
P1L14——【git版本管理】版本回滚 github Desktop 版本回滚 版本回滚指的是想要将当前的代码更新为老版本中的代码。 在实际开发时偶尔会遇到,比如我们做了某个功能,但是策划认为这个功能暂时不想发布,或者这个功能直接被抛弃了。 那么这时我们需要将代码恢复为以前的某个节点。 回滚前,保证本地和 Github 云端的仓库是一致的,我们首先要拉去版本,保证一致,点击同步 回滚版本,在历史页签中,选中想要回滚的版本,右键点击在提交中还原更改 一般情况下,此时会产生冲突,因为还原时,文件内容要修改 点击关闭,然后来到更改页签,解决文件冲突即可,双击有冲突的文件 会通过默认的编辑器打开,VSCode为例,选择你要采用的内容,在这里要还原老版本,所以选择传入的更改后,保存并关闭编辑器 接着推送,Github 上的内容,就还原为你此处的修改了 注意:回滚版本的关键点,其实也是冲突解决,我们只要保证在回滚时将冲突妥善处理即可
P1L13——【git版本管理】将私密项目分享给团队其他成员
P1L13——【git版本管理】将私密项目分享给团队其他成员 将 github 私密项目分享给团队其他成员 在Github主页中进入想要分享的项目 进入后点击设置 点击协作者 点击邀请他人 输入团队成员的GitHub ID 搜索到后点击添加对方到这个仓库 等待对方接受即可 被邀请者,一般会收取到邀请的邮件 被邀请者在网页上登录自己的 Github 后,点击查看邀请 点击接受邀请即可,被邀请者就可以在主页看到对应的项目了 接受邀请后,获取项目 被邀请者,可以在自己的 Github Desktop 中将项目克隆到本地 在弹出的界面中可以看到别人分享给你的项目,你只需要选择存储路径,便可以将其获取到本地 点击克隆后稍等一会,便可以在 Github Desktop 中查看到克隆下来的项目 这样,便可以多人协同开发