- 博客(180)
- 收藏
- 关注
原创 VS For Mac 在生成事件后出现MSB3073 Mac上与Window上的不同
另外需要注意的是,VSformac很辣鸡,它创建的空类工程,结构也和windows上的不一样,导致,我按照一个教程写,发现,一直报错,最后我用一个window重新打,才发现,tmd目录不一样。命令是这样的,然后按照这个去输入一直不对,最后去stack论坛上找才发现,Copy是windows上的命令,需要换成cp,cp才是mac上的命令。今天在用VS按照一个教程去搞的时候一直报错。...
2022-07-25 00:33:41
336
1
原创 UnityWebRequest 在Mac上与Window上的不同
有一次开发发现,UnityWebRequest有一个路径在window上运行正常,在mac上运行就会报错,找不到路径。window上对路径中特殊符号的替换处理。
2022-07-17 16:36:15
474
原创 unity-ScriptableObject的详细讲解
这种比较简便,在project文件内,点击加号就能看到,这种方法需要继承ScripteableObject类在顶部菜单栏创建,自主传入类名,指定生成位置1、直接声明一个资源类,然后在inspector,直接将asset拖上去2、放到能加载到的文件夹内,直接加载3、通过单例模式去加载,这样不用去动态加载和手动拖取3、数据只会在编辑模式才会被更改,也可以在编辑模式下,运行时候用代码更改,但是不能再打包出去后更改非持久化数据非持久化数据变成持久化原理就是将类保存到其他持久化方式中,类如json
2022-07-10 20:15:05
6539
1
原创 剑指 Offer 12. 矩阵中的路径
题目:给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。url:https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/示例
2022-07-07 21:53:40
118
原创 替换空格_
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000思路1:新建一个字符串,用于拼接,是空格则拼接"%20" 否则就拼接本身时间:O(n);空间:O(n) public static string ReplaceSpace(string s) { string temp_string = "";
2022-04-28 13:27:57
235
原创 3数组中重复的数(剑指)
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000namespace ConsoleApp2;public class 数组中重复的数字{ //思路1:拿到一个数,就把他存放到字典里,值当做key
2022-04-26 12:19:59
133
原创 2. 两数相加
namespace ConsoleApp2;/*给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 =
2022-04-22 00:02:49
357
原创 算法题的思路
刷题技巧减少时间复杂度类似于数组、字典一类的结构是直接访问地址查询数据的,查询时间是O(1)的,因此将想要查询的数当做字典的key,是常用的一种减少时间复杂度的关键持续补充
2022-04-22 00:01:41
135
原创 算法题的思路
刷题技巧减少时间复杂度类似于数组、字典一类的结构是直接访问地址查询数据的,查询时间是O(1)的,因此将想要查询的数当做字典的key,是常用的一种减少时间复杂度的关键持续补充
2022-04-19 11:22:15
80
原创 1、两数之和 —— leetcode
给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 “和”为目标值target的那两个整数并返回它们的数组下标规则:你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums = [2, 7, 11, 15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回[0, 1]示例2:输入:nums = [3, 2, 4], target = 6
2022-04-19 11:17:48
259
原创 Unity持久化数据之二进制
1、二进制定义就不赘述,直接说相对于Json、Xml 的好处Json、Xml好处是看着易懂,但是不好就是玩家可以找到存储信息,然后快速修改内容,另外因为xml和json是字符串,存取时候读写时的效率较低,内存和硬盘空间占用较大。Json、Xml 的坏处就是,不安全、效率低。所以二进制安全、效率高。...
2022-01-13 00:03:06
2231
原创 Unity数据持久化之Json
1、Json是什么JSON是一种取代XML的数据结构。和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。2、将对象转化成Json原对象:转成Json后3、Excel转化成Json这样写到excel中,然后复制excel中的内容到网站上,例如https://www.bejson.com/json/col2json/ 这个地方,直接就可以转成想要的Json文件,该方法比较笨,正确做法是应该有个自动化工具帮忙完成这一系列操作,日后编辑器开发在搞
2022-01-12 12:04:08
2582
原创 Unity数据持久化之XML
本博客主要记录PlayerPrefs的使用,比较长1、什么是数据持久化数据持久化就是将内存中的数据模型转化为存储模型,以及将存储模型转化为内存中数据模型的通称简述:将游戏中的数据存储到硬盘,然后可以下次进游戏的时候读取硬盘中的数据到内存。2、什么是PlayerPrefs...
2021-12-08 10:57:18
3157
原创 Unity数据持久化之PlayerPrefs,详细
本博客主要记录PlayerPrefs的使用,本文比较啰嗦,比较长1、什么是数据持久化数据持久化就是将内存中的数据模型转化为存储模型,以及将存储模型转化为内存中数据模型的通称简述:将游戏中的数据存储到硬盘,然后可以下次进游戏的时候读取硬盘中的数据到内存。...
2021-11-08 00:22:04
8927
2
原创 Unity中的射线检测
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Lesson23 : MonoBehaviour{ // Start is called before the first frame update void Start() { #region 知识点一 什么是射线检测 //物理系统中 //目前我们
2021-11-01 20:04:48
2004
原创 Unity中的范围碰撞检测
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Lesson22 : MonoBehaviour{ // Start is called before the first frame update void Start() { #region 知识回顾 物理系统之碰撞检测 //碰撞产生的必要条件 /
2021-11-01 00:48:29
3644
原创 Unity中LineRenderer相关知识点
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Lesson21 : MonoBehaviour{ private Material m; // Start is called before the first frame update void Start() { #region 知识点一 LineRender...
2021-10-31 20:01:34
2441
原创 Unity特殊文件夹的作用,资源\场景加载方法,同步和异步
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Lesson16 : MonoBehaviour{ // Start is called before the first frame update void Start() { #region 知识点一 工程路径获取 //注意 该方式 获取到的路径 一般情况下 只在
2021-10-26 00:29:05
419
原创 关于Unity的开发的辅助api
类型思考1、快速知道某物体在自己的前面或者后面,以及夹角(可用来判断攻击范围)-- 用向量的点乘 float dotResult = Vector3.Dot(this.transform.forward, target.position - this.transform.position); 大于0 在前方,小于0在后方,等于0在同一水平 //1.用单位向量算出点乘结果 dotResult = Vector3.Dot(this.transform.forward, (target
2021-08-19 00:00:24
111
原创 Unity 基础 关于向量的api和解释
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Lesson4 : MonoBehaviour{ // Start is called before the first frame update void Start() { #region 知识点一 向量 //三维向量 - Vector3 //Ve
2021-08-18 22:31:49
704
原创 迭代器 ---------------C# 知识点9
系列文章目录文章目录系列文章目录前言一、迭代器是什么?二、实现方法总结前言一、迭代器是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。//迭代器(iterator)有时又称光标(cursor)//是程序设计的软件设计模式//迭代器模式提供一个方法顺序访问一个聚合对象中的各个元素//而又不暴露其内部的标识//在表现效果上看//是可以在容器对象(例如链表或数组)上遍历访问的接口//设计人员无需关心容器对象的内存分配的实现细节//可以用
2021-08-12 10:17:26
98
原创 线程、协程 的使用------------C#知识点7
using System;using System.Threading;namespace Lesson18_多线程{ class Program { static bool isRuning = true; static object obj = new object(); static void Main(string[] args) { Console.WriteLine("多线程");
2021-08-12 09:14:29
316
原创 特性 ----------------C#知识点8
特性//特性是一种允许我们向程序的程序集添加元数据的语言结构//它是用于保存程序结构信息的某种特殊类型的类//特性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。//特性与程序实体关联后,即可在运行时使用反射查询特性信息//特性的目的是告诉编译器把程序结构的某组元数据嵌入程序集中//它可以放置在几乎所有的声明中(类、变量、函数等等申明)//说人话://特性本质是个类//我们可以利用特性类为元数据添加额外信息//比如一个类、成员变量、成员方法等等为他们添加更
2021-08-12 08:28:55
119
原创 进程、线程、协程、并发、并行、串行、unity的协程全程讲解------------知识点6
先了解一下并行和串行 和并发的概念注意:并发是对需求侧的描述,并行、串行才是对实现侧的描述,这两根本不是同一个范畴的东西,更不可能是互斥的关系。一定不要被同时段(并发)、同时刻(并行)那些老被拿出来一起比较的概念,弄混了本质并发是指同时有很多事要做,(10000个任务分给6个核心,肯定会出现并发现象),你可以串行处理也可以并行处理。并行是指同时做多件事。因此并发和并行是相关的,但是是不同的两个概念。并发:并发(同一时间段,而不是同时)(concurrent)指的是多个程序可以同时运行的现象,更
2021-08-08 00:20:38
3331
1
原创 协变和逆变out in 委托 ------------知识点5
什么是协变 out 和逆变 in首先将out in与 ref out这两个区分开来,ref out 是关于参数的引用传递的,协变:in和谐的变化,自然的变化因为 里氏替换原则 父类可以装子类所以 子类变父类比如 string 变成 object感受是和谐的逆变:out逆常规的变化,不正常的变化因为 里氏替换原则 父类可以装子类 但是子类不能装父类(但是为什么子类确实在逆变里装了父类)所以 父类变子类比如 object 变成 string感受是不和谐的也可以简单理解为,in代表进局
2021-07-29 00:59:28
230
原创 List的排序,自定义排序------------知识点4
List的排序1、系统自带的系统自带的变量(int,float,double…) 一般都可以直接Sort为什么呢,因为因为int等等直接就继承了IComparable接口,并实现了比较方法。但是遇到下面这种根据特性排序的就不能直接调用sort class Item : IComparable<Item> { public int money; public Item(int money) { thi
2021-07-28 00:40:00
157
原创 lambad表达式和闭包------知识点3
lambad表达式1.定义1.可以将lambad表达式 理解为匿名函数的简写它除了写法不同外使用上和匿名函数一模一样都是和委托或者事件 配合使用的using System;namespace Lesson15_lambad表达式{ class Program { static void Main(string[] args) { Console.WriteLine("lambad表达式");
2021-07-27 23:54:56
114
原创 Unity编辑器的开发(1)
记录学习过程中记录一下第一个脚本using UnityEditor;这是必须要引入的[MenuItem(“我的工具/HelloWorld工具/创建HelloWorld”)] 这里就会在菜单栏目创建对应的菜单using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class HelloWorld { [MenuItem("我的工具/He
2021-07-27 00:35:20
1042
原创 匿名函数只能给委托用
匿名函数定义//顾名思义,就是没有名字的函数//匿名函数的使用主要是配合委托和事件进行使用//脱离委托和事件 是不会使用匿名函数的当用常规的委托调用方法时使代码很混乱或者不简洁的时候,可以使用匿名方法(内联代码块定义)。什么意思呢,我们用委托调用方法时,是根据方法名调用的,当需要待用的方法很多时,我们创建很多的方法,但是很多方法又不常用,现在我们可以用匿名方法代替。省去了自己定义一个方法的步骤using System;namespace Lesson14_匿名函数{ class
2021-07-26 00:57:55
140
原创 委托 和 事件
委托定义委托是存有对某个方法的引用的一种引用类型变量,本质是一个类,用来 存储、传递函数(方法)。可以将其 实例与 "格式"的方法 相关联。using System;namespace Lesson12_委托{ #region 知识点一 委托是什么 //委托是 函数(方法)的容器 //可以理解为 表示函数(方法)的变量类型 //用来 存储、传递函数(方法) //委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型) //不同的 函数
2021-07-25 16:14:47
125
原创 C# 多态 如何理解父类引用指向子类对象 里式转换原则
从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Father f = new Father();//系统将分配1M内存.Son s = new Son();//系统将分配1.5M内存!因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造函数.由于s中包含了父类的实例,所以s可以调用父类的方法.Son s
2021-06-17 00:13:32
741
1
原创 C# 关于GC垃圾回收的过程
一、数据类型C#中的数据类型分为值类型 (Value type) 和引用类型(reference type),值 类 型: 所有的值类型都集成自 System.ValueType 上,除非加声明?否则不可为null,保存在 堆栈(Stack,先进后出)上,常见的值类型有:整形、浮点型、bool、枚举等。引用类型:所有的引用类型都继承自System.Object 上,引用类型保存在 托管堆(Head,先进先出)上,常见的类型有:数组、字符串、接口、委托、object等。拆箱和装箱:引用类型和
2021-06-14 16:44:27
1530
原创 C# ref和out的作用和区别
全写到代码里了作用1以往值类型当做形参都会被重新开辟栈空间重新赋值,加上ref和out后就会把值类型也是传递指针,而不是传递值本身using System;namespace Lesson8_ref和out{ class Program { #region 知识点一 学习ref和out的原因 //学习ref和out的原因 //它们可以解决 在函数内部改变外部传入的内容 里面变了 外面也要变 static void
2021-06-14 10:29:59
249
原创 Unity方面的三角函数
角度和弧度的转换 void Start() { #region 知识点一 弧度、角度相互转化 //弧度转角度 float rad = 1; float anger = rad * Mathf.Rad2Deg; print(anger); //角度转弧度 anger = 1; rad = anger * Mathf.Deg2Rad; print(rad)
2021-06-13 16:01:53
2118
2
原创 unity笔记 关于Math的api、插值运算等
math是C#的,mathf是unity这边又加了一些游戏需要的api的math是类,mathf是结构体Mathf ApI //1.π - PI print(Mathf.PI); //2.取绝对值 - Abs print(Mathf.Abs(-10)); print(Mathf.Abs(-20)); print(Mathf.Abs(1)); //3.向上取整 - CeilToInt f
2021-06-13 15:16:33
559
原创 C#的虚方法、静态方法、实例方法、抽象方法、拓展方法
1、虚方法首选虚方法就是加上一个标记,virtual,它的作用就是可以被子类进行重写。这个虚方法必须要有自己的方法体,它的子类并不一定要去重写它,根据需求定例子:另外有几个系统自带的虚方法EqualsGetHashCodeHaveToString关于Equals()虚方法1,对于字符串和值类型能够自动比较是否相等。Equals()默认支持的是‘引用’相等 也就是比较俩个对象的‘地址’,而非对象本身,如果是值类型的数据,则可以直接比较结果。2,对于对象比较必须重
2021-06-06 18:20:03
1482
1
转载 C#装箱和拆箱
概念装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。装箱在值类型向引用类型转换时发生拆箱在引用类型向值类型转换时发生我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码object obj = 1;这行语句将整型常量1赋给object类型的变量obj; 众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。请看下面的C#代码:object objValue = 4;int value = (int
2021-05-16 21:43:01
526
原创 C#值类型、引用类型(堆和栈)---知识点10
栈和堆(栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放)概念值类型直接存储其值,而引用类型存储对其值的引用值类型派生自 System.ValueType,System.ValueType又派生自System.Objcet引用类型派生自 System.Objcet值类型:byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。(decimal 关键字指示 128 位数据类型。 与浮点型相比,decim
2021-05-16 21:02:09
476
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人