- 博客(33)
- 收藏
- 关注
原创 Unity运行模式下修改代码保存后报错
原因可能是,Unity偏好设置常规这里选择了第1个,推荐选择第2个,等编辑器停止运行后再重新编译三个选项的含义:重新编译并继续播放;在完成播放后重新编译;停止播放并重新编译;
2022-05-23 11:45:29
936
原创 Conditional 特性的使用
当调用被[Conditional("预处理符号")]标记为条件的方法时,指定的预处理符号的存在或不存在决定是否包含或省略此调用。如果定义了该符号,则包含调用;否则省略调用。使用 Conditional 是封闭 #if 和 #endif 内部方法的替代方法。
2022-04-09 15:13:23
767
原创 A*寻路算法——优化
主要是对上一版A*寻路算法——初版的两点小优化1. 格子节点管理类(主要寻路逻辑)2. 针对开启列表OpenList的排序次数进行优化,减少排序的次数。针对开启列表OpenList和关闭列表CloseList进行的判是否存在该节点进行优化,用一个数组记录已经在列表的格子,因为数组查找的效率比较高,用空间换时间。
2022-04-09 14:46:16
905
原创 A*寻路算法——初版
格子节点类using System.Collections;using System.Collections.Generic;using UnityEngine;public enum E_Node_Type{ Stop, Pass, Boundary}public class AStarNode{ public float f; public float g; public float h; public int x; public .
2022-01-05 23:55:28
209
原创 Unity Project面板的拓展和Hierarchy面板的拓展
需要注意的地方: 首先需要引入UnityEditor命名空间; MenuItem第一个参数是路径,Project面板拓的路径的开头一定要是Assets,如果拼错或者写其他的路径,点击右键不会显示My Tools这个选项 MenuItem第二个参数要为false,如果为true,则该选项被隐藏 MenuItem第三个参数,值越小,选项越靠前,上面的Tools 1选项...
2021-12-06 21:16:28
600
原创 浅析六种编程的基本原则
单一职责原则:一个类或者一个方法,只实现一种功能。对于外部的影响,应该是只有一个因素引起它们的变化。今天我写一个定时器的功能,我就把定时器的过程直接写在OnUpdate里,这样不好的地方是,OnUpdate里的东西越写越多,后期维护起来麻烦;还有也没有体现这个定时器的复用性。如果把这个定时器的代码写在独立的一个方法封装起来,其它地方要用到的时候可以直接调用或者传参调用,这样就能很好的复用定时器的...
2021-03-14 21:36:25
1169
原创 单例模式的五种写法
常规写法(懒汉式),用在单线程,会有多线程问题//常规写法public sealed class Singleton1{ private Singleton1() { Debug.Log("执行了 Singleton1 构造函数"); } private static Singleton1 m_Instance; public static Singleton1 Instance { get { .
2021-01-12 00:06:53
143
1
原创 C#报错:InvalidOperationException: out of sync
原因:遍历字典的时候更改了字典内容(删除、修改、添加)解决办法:可以用个列表把字典需要修改的内容记录下来,然后通过遍历列表,修改字典里需要修改的内容...
2021-01-11 23:11:28
363
原创 Unity中Animation动画的创建
记录下关于Animation的学习:1.首次创建Animation动画:(1) 把Sprite直接拖到Hierarchy面板;(2) 选中拖上去的Sprite,然后Windows->Animation或者直接Ctrl+ 6,弹出Animation面板;(3) 在Animation面板中有个Create按钮,点击创建动画,后缀名是.anim,选择保存文件夹重命名保存,会同时保存一个动...
2020-10-14 22:09:58
6051
4
原创 Unity UI组件Toggle的两个坑
这几天使用Toggle组件遇到的两个坑:第一个坑是,容易忽略Toggle组件的onClick.AddListener()方法,只有在属性isOn有变化的时候才会触发这个AddListener()监听。明确的来说,这个坑点不算是坑,是自己没有理解到位这个方法的使用,这里主要容易踩坑的地方是,UI预制体默认勾选了其中一个Toggle的isOn,然后想默认打开某个界面UI的时候,刚好也想默认触发这个Toggle的监听方法:private void Event(){ toggl1.onClick.Add
2020-07-16 23:18:24
5516
原创 C#字典排序(按Key值、Value值顺序逆序排序)
字典的排序,简单做个笔记,方便查询(引用命名空间using System.Linq;):Dictionary<int, int> tempDict = new Dictionary<int, int>();var sortResult1 = from pair in tempDict orderby pair.Value descending select pair; ...
2020-06-18 21:51:16
6207
原创 C#列表List排序的两种情况
对于普通的int型列表List,如下List<int> list = new List<int>();list.Sort(); // 升序排序list.Reverse(); // 降序排序:先升序排序,再反转顺序 对于Class型的列表List,根据类的某一属性进行排序,如下 //使用lambda表达式,在前面加个负号就是降序了 ...
2020-06-15 22:28:24
676
原创 Unity中浮点数在Text组件上以整型字符串形式显示的三种方法对比
做人物属性数据显示的时候,得到的浮点数要在UI的text组件上以整数形式显示,暂时想到三个解决方案:1. 直接限制浮点数的显示:浮点数.ToString("f0");2. 先转为整型,再转字符串显示:Convert.ToInt32(浮点数).ToString();(引用命名空间System)3. C#6.0中新出一种可读性比较强的方法:$" { 要以字符串显示的东西 }"测试代码:...
2020-06-15 22:22:16
2639
原创 C#中判断文件或文件中是否存在的方法
前几天查找判断文件是否存在方法的时候踩了几个坑,找到了 File.Exists() 和Directory.Exists() 这两个方法(都是引用System.IO命名空间),这两个方法容易混淆。用法区别如下:File.Exists()if(File.Exists(path+".文件后缀名")) //该方法是判断该路径下有没有该文件,注意一定要加上文件后缀名{}Directory.Exists()if(Directory.Exists(path)) //该方法是判断该路径下有没有该文件夹
2020-06-03 22:16:33
5683
原创 unity导进项目报错:
如果Unity是2018及以上的版本,可在Edit->ProjectSettings->Player->Other Settings的Configuration下修改Scripting Runtime Version*的版本设置为 .Net 4.x Equivalent 即可,根据提示重启Unity即可。...
2020-06-03 21:54:34
1317
原创 Unity中创建游戏物体的三种方法:
通过new GameObject();通过Instantiate();通过GameObject.CreatePrimitive();总结:1)new GameObject()可通过字符串名字来创建游戏物体,并且可挂载某一个组件;2)Instantiate()通过预制体创建游戏物体;3)GameObject.CreatePrimitive()可创建某一种类型的游戏物体,比如...
2020-05-05 15:39:12
2162
原创 C#中反射方法使用的简单介绍
在脚本中介绍使用:(引用命名空间 using System.Reflection)void Start() { Type type = typeof(Person); //获得对象的类型信息 MethodInfo methodInfo = type.GetMethod("Say"); //通过类型和方法名,获得该方法的引用 object ...
2020-05-05 15:15:43
635
原创 Unity中transform.SetParent()和transform.parent的区别
先直接看测试数据:下图脚本是挂在一个UI的Panel上的,Panel上的的两个子物体分别是UI Image,3D物体 CubeImage测试Cube测试两者测试结果从测试数据循环10000次SetParent用时几乎为零,而.parent相对来说耗时巨大,可以看出使用SetParent比.parent的耗时更短,效率高出很多;并且从Image和Cube分别把Panel设为...
2020-05-05 14:30:23
3532
原创 C#中out和ref使用的区别
看了网上许多关于out和ref关键字的使用介绍,自己为了方便记住,稍微简略总结了下两者的区别:a. 赋值:(1)ref要求变量使用前必须先赋值(2)out不必要,赋了也没关系,但会清零b. 传出:(1)ref有进有出(或无出)(2)out无进有出总结:out适合用在需要必须有返回值的地方,而ref则用在需要在被调用的方法中修改自身引用的时候。...
2020-05-05 11:11:38
139
原创 VS2017打开项目提示需要迁移的解决方法
可能的原因是之前用更低的VS版本打开过项目,再用高的版本打开时,在解决方案里提示项目需要迁移。解决办法是:打开项目所在的文件夹,把Assenbly-CSharp.csproj, Assenbly-CSharp-Editor.csproj, 项目名.sln文件删除,即可解决。...
2020-05-05 10:37:24
7491
原创 C#事件和委托的区别
声明的区别:绑定注册的区别:(其实没发现啥区别,望指正)调用的区别:(原因是因为有了event关键词后,这个委托声明会默认为private类型,即使定义的时候是public类型)...
2020-05-04 21:05:18
164
原创 MVC和ECS两种设计架构的初浅理解
MVC模式MVC由Model、View、Controller三部分组成,分别负责数据的存储、视图界面的显示、业务逻辑的处理。我理解分为下面几个部分:用户在View层下达指令,View层把指令传给Controller层,或者是Controller层监听了View层,只要View层被下达指令,Controller层立刻处理与该指令有关的业务逻辑。在Controller层处理Model层的业务...
2020-05-04 18:28:30
3536
原创 C#读取本地文件夹中所有文件文本内容的方法
了解测试了下C#读取本地txt文本内容的方法,在Unity中测试读取本地文件,txt文本编码格式为ANSI的时候,中文输出为乱码;txt文本编码格式为unicode、unicode big endian、utf-8的时候,中文能正常输出。下面为两种读取txt文本内容的方法:(记得引用using System.IO)string path = "C:\\Users\\hahaha\\Desk...
2019-12-06 22:46:09
5407
原创 C#转整型的三种方式的区别以及效率对比
C#转整型的三种方式的区别三种转换方式:1. 强制转换(int)2. Convert.ToInt32()3. int.Parse(string) 或 int.TryParse(string, out int)三种类型转整型:a.浮点型转整型由报错的提示可知int.Parse() 或 int.TryParse(string, out int)这两种方法只能将字符串数字转为整型,不能...
2019-11-30 17:59:19
2131
1
原创 结构体和类使用的区别
前段时间写推力叠加时遇到的一个问题,我当时最开始是用两个列表分别存储由推力和方向得到的速度、速度的持续时间,下标一一对应。后来觉得可以用结构体来存储速度和持续时间,这样就只需要一个列表管理就可以了,能少用一次遍历,同时更好的面向对象吧。然后用结构体改的时候却发现结构体里的字段不能直接用来加等减等运算,因为结构体里的字段是放在栈里的,为值类型。后来就把结构体改成类解决了这个问题,因为类的存储是在堆里...
2019-11-30 16:35:40
1491
原创 匿名方法和lambda表达式使用的区别
1.关于参数(1)匿名方法可省略参数和“()”;(2)当lambda表达式只有一个参数时,表达式的”()“括号可以省略,无参和多参括号“()”都不可以省略;2. 关于数据类型(1)匿名方法不可省略数据类型;(2)可省略数据类型。因为在Func委托那里就已经设定好了参数类型和返回值类型。...
2019-11-30 15:41:17
677
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人