![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c#
头号理想
四面佛保佑
展开
-
unity图集的使用(万能方法)
图集的意义使用图集可以说是多加了一个步骤 但是这个步骤不是没有意义的他可以有效的减少drawcall的数量,多张图片需要多个drawcall,而如果我们合成一个大图 只需要一个drawcall并且可以减少内存的开销图集的使用然后就到了图集的使用上了首先创建一个图集然后我们将想要设置的文件夹或者是文件 赋值上去这里可能会产生报错 如果报错 我们需要设置一下这样报错就消失了 按钮也可以点击了然后就要通过代码来给我们想要设置的赋值了 public static Sprite GetA原创 2021-06-14 14:56:45 · 3593 阅读 · 3 评论 -
unity脚本生命周期和执行顺序
最近我也开始为将来的面试做准备了然后我会更新一系列关于unity底层的知识就从今天这篇开始unity脚本生命周期Awake 脚本实例被创建时调用 用于游戏对象的初始化,注意Awake的执行早于所有脚本的Start函数OnEnable 当对象变为可用或激活状态时被调用Start Update函数第一次运行之前调用 用于游戏对象的初始化Update 每帧调用一次 用于更新游戏...原创 2020-05-03 17:18:58 · 3974 阅读 · 2 评论 -
c#中函数参数中的this(扩展方法)
首先和大家说一下,最近参加实习了,所以更新可能比较少而且对于大家提出的问题可能不能及时回复,希望大家理解在我看完大佬的项目之后,感觉自己啥也不会 于是不出意外 之后再csdn上我就会更新我在项目中遇到的问题希望对大家也有些帮助c#函数参数中的this我们知道用到this一般的场景是 在构造函数或者其他函数中赋值的时候然后我今天看到了普通函数中也可以使用this它的作用是扩展方法!我们首先声明一个静态类,然后在这个静态类中写一个静态方法 函数参数为一个tihs的值public static原创 2021-04-08 09:15:04 · 3771 阅读 · 2 评论 -
c#索引器
c#中索引器允许一个对象像数组一样使用下标的方式来访问当你为类定义一个索引器的时候,该类的行为就会像一个虚拟数组一样你可以使用数组访问运算符**[]**来访问类的成员一维数组的语法如下element-type this[int index]{ // get 访问器 get { // 返回 index 指定的值 } // set 访问器 set { // 设置 index 指定的值 }}索引器的行为的声明在某种程度上类似原创 2020-10-22 11:11:55 · 1006 阅读 · 1 评论 -
c#中的多线程的介绍以及在unity中的使用
多线程在很多语言中都有 在游戏开发中如果用的好的话也能达到我们想要的效果线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。线程是轻量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率。到目前为止我们编写的程序是一个单线程作为应用程序的运行实例的单一的过程运行的。但是,这样子应用程序同时只能执行一个任务。为了同时原创 2020-10-15 20:01:30 · 1303 阅读 · 0 评论 -
unity的震动的特效的开发
震动这个特效我想写很久很久了 但是因为各方面的原因之前我实现震动 是用了Dotween中的方法实现的最终我还是参考了大佬的博文写出来简单的demo然后就是代码了using System.Collections;using System.Collections.Generic;using UnityEngine;public class Shake : MonoBehaviour{ // 震动的标志位 public bool isshakeCamera = false;原创 2020-08-27 17:10:57 · 570 阅读 · 2 评论 -
unity开发对象池 (使用字典动态查找和删除)
很久之前我写过一篇关于对象池的博文 使用List来写的博客地址今天我给大家用字典实现一下对象池 可以说这次的对象池是上次的升级版可以动态和定向的添加和删除池中的物体然后就给出代码了哈using System.Collections;using System.Collections.Generic;using System.ComponentModel;using UnityEngine;public class GameObjectPool : MonoBehaviour{原创 2020-08-27 11:43:31 · 1118 阅读 · 0 评论 -
unity中FindObjectsOfType和FindObjectOfType的用法
FindObjectOfType<>()和FindObjectsOfType<>()是返回场景中的所填类型的随机个体和集合例子public Rigidbody a; public Rigidbody[] b; private void Start() { a = GameObject.FindObjectOfType<Rigidbody>(); b = GameObject.FindObjectsOfType&l原创 2020-08-26 16:38:19 · 7481 阅读 · 0 评论 -
unity中泛型的全部使用方法
泛型对于我们写程序可以有奇效 在合理的运用下 会使代码更简洁明了例如List 就是一个很好的例子所以我今天更新一篇关于泛型的博文方法的使用首先介绍一下函数方法的使用 public T GetAndAddComponent<T>(GameObject obj) where T:Component { if (!obj.GetComponent<T>())//检查该游戏物体是否还有T组件 { obj.AddCom原创 2020-08-26 11:13:04 · 5129 阅读 · 2 评论 -
unity黑色全屏UI(Image)的淡入和淡入方法
之前写过一篇博客是Image的淡入和淡出的效果那个比较局限 调用时也不好调用今天我给大家介绍一个我写好的一个方法非常好调用 只用一句代码 不过前提是必须所有用到的场景中都要事先做一个Image名字叫做BlackImage 我们待会会通过代码来查找到这个组件我直接给出代码吧public class BlackImages : MonoBehaviour, IPointerClickHandler{ private Image BlackImageObject; private原创 2020-08-14 17:26:54 · 1073 阅读 · 0 评论 -
unity在实例化出UI的位置问题
在unity中 如果我们使用常规的Instantiate来实例化UGUI的时候其中的位置填上Vector3的参数 效果和我们想要的效果是完全不同的要是的确想要这个方法来实现还得修改锚点等参数我们这里使用一种简单的方法我这里给我之前写过的一篇博客做优化博客地址我们通过修改GetComponent().anchoredPosition来修改位置给出优化出的代码public string HeroName; private static Hero instance; public原创 2020-08-06 10:35:45 · 2149 阅读 · 0 评论 -
unity动态分类加载文件中的资源
最近打王者荣耀的时候偶然发现 当我们在换皮肤的时候场景中的很多东西会同时换 如果我们在开发的时候一个一个把他们放入场景中这是很耗时间的 我们完全可以把他们分类在一个文件夹中 动态加载出来比如王者荣耀中每换一款皮肤 很多东西都会改 比如模型 背景 动画等还有就是大量的UI(金额 说明等等)开发的时候一个一个弄到场景中 想想就头大动态加载的实现我们的思路还是使用Resources的load我们事先把文件分类 场景中物体分为一类 UI分为一类这是我的分类 我们的代码是要获取路径的代码 pub原创 2020-08-06 09:51:42 · 466 阅读 · 0 评论 -
unity代码给UGUI注册事件
在使用UGUI的时候,我们有时候会忘记去给UI注册事件比如Button或者是Toggle这篇博客简单介绍一下常用UI的注册事件(通过代码)其实只要我们对UGUI足够熟悉这些事很简单的除了按钮比较特殊我先写了一个简单的类为了自动识别UGUI的类型public class uitypetest : MonoBehaviour{ public string Type;}然后写了一个测试的脚本 private void Update() { if (transf原创 2020-08-02 18:22:39 · 489 阅读 · 0 评论 -
unity小地图的开发2(纯UGUI不使用Camera)
小地图是3D游戏中非常重要的之前我写过一篇关于小地图的开发的 用到了Cameracamera小地图开发地址然后这篇博客我们纯使用UGUI来实现小地图我这里用个第一人称的控制器来做主角 (控制器是我之前写的)之前我写的第一人称控制器地址大家可以用作参考准备过程我们随便找一个地图 然后添加第一人称控制器在地形上如果条件允许我们根据自己的地图可以自己画一个地图(我的条件不太行 哈哈)我就用一张随便找的图来代替了然后根据下边的UGUI遮罩的博客我们搭建简单的UI其中playerlogo是主原创 2020-08-01 18:39:56 · 1381 阅读 · 0 评论 -
unity判断UGUI的重合
unity的UI是何以重合的 我们可以利用RectTransform的性质来判断是否具有重合的部分public RectTransform a; public RectTransform b; private void Update() { if (IsRectTransformOverlap(a, b)) { Debug.LogError("重合"); } } public static bo原创 2020-08-01 17:16:03 · 1987 阅读 · 1 评论 -
ArrayList和List的主要区别
主要区别就是ArrayList不安全List和ArrayList的用法是不同的 List<int> a = new List<int>(); ArrayList b = new ArrayList();一般我们在写程序的时候用到ArrayList很少,虽然ArrayList规定其类型默认就是object,功能很强大但是如果你要使用b.Add(a);这句话这里就包含了装箱的操作(把a转换成为object) 拆装箱是很消耗内存的我之前写过的一篇关于拆装箱的博客链接原创 2020-07-29 09:25:04 · 4923 阅读 · 1 评论 -
c#的值类型和引用类型(拆装箱)
1.值类型和引用类型1.管理机制值类型:操作系统负责,作用域结束时被操作系统自动释放引用类型:垃圾回收器负责2.内存分配值类型:值类型实例总会被分配到变量声明的地方声明的是局部变量 被分配到栈上声明的是引用类型成员的时候被分配到管理堆上引用类型:实例总被分配到托管堆上变量存储在栈中3.赋值方式值类型:复制变量包含的值引用类型:复制对象引用(地址)4.基类值类型:继承System.ValueType;System.ValueType又继承自System.Object引用类型:引用原创 2020-07-28 17:19:08 · 564 阅读 · 0 评论 -
unity的ref和out参数
ref参数使用ref参数,在方法执行完成后,对参数的改变可以反映到变量上去测试: private void Start() { int a = 0, b = 0; test(ref a, b); Debug.LogError(a + " " + b); } public void test(ref int a,int b) { a = 10; b = 10; }可以看到r原创 2020-07-27 10:34:45 · 2163 阅读 · 0 评论 -
如何把c#输入变成一行格式
最近刷了一些算法题 然后我用的是c#有的题目的输入和c#自带的输入方式不同c#输入默认为回车另起一行 我们按照一行输入就会报异常这样就和有的题的输入个数不同比如下面这样所以必须我们自己把输入格式改成一行输入这样模式 string inputStr = Console.ReadLine(); //读输入的多个连续数字 int[] nums = new int[3];...原创 2020-05-01 08:41:47 · 1415 阅读 · 0 评论 -
unity文件操作基础
前几天尝试了unity中截图的效果 虽然是实现了但是其中还是有很多不明白的地方运行截图博客传送门这篇博客先补充一下文件操作相关的知识我这里介绍一下如何创建文件(txt)如何向文件中写入数据如何删除文件中的数据 如何读取文件中的数据写入文件public void WriteFileByLine(string file_path, string file_name, string str_...原创 2020-04-24 18:26:35 · 454 阅读 · 0 评论 -
unity实现游戏界面截图
在很多手游中我们可能会留意到 当我们闯关成功或者失败的时候游戏自动给我们截一个图 然后提示我们可以分享朋友圈等等我经过各方查找资料等终于可以实现这个效果了 因为中间有很多我们没有深刻接触过的类所以代码的意思还是没有全部明白下面开始实现我们的思路是在文件夹中创建一个图片然后每次截图之后 更新这个图片的内容 之后再合适的时机我们可以用UGUI来表达出来比如失败或者成功的时候void ...原创 2020-04-23 15:59:54 · 1950 阅读 · 1 评论 -
unity开发2D残影效果(利用Queue)
最近我在准备一个比赛 然后现在的想法是做一个2D的类似于跑酷的游戏然后就想到做一个冲刺的效果(不单单是速度的改变 还有身后的残影)和上几篇博客一样 还是用之前超级玛丽来实现的 效果如下这里边会用到队列和对象池的知识 我之前写过栈和队列还有对象池的博客 可能对大家有用栈和队列传送门对象池传送门然后就开始我们的实现过程吧我的思路是创建一个对象池 然后每次按下特定的冲刺键的时候 对象池...原创 2020-04-21 17:04:29 · 1664 阅读 · 0 评论 -
unity2D开发钩绳枪效果(2D射线检测 铰链关节 Linerenderer组件的使用)
这几天我突发奇想 想要实现一个2D的钩绳枪但是实现过程可以说是十分坎坷了 遇到了好多意料之外的问题然后这篇博客 给大家介绍一下遇到的坑 以及我对于钩绳枪的想法首先 我想到的是在玩家本身发射2D的射线 方向朝着鼠标的方向这就是一个困扰我很久的 一个问题因为坐标系的不同2D射线和3D的用法几乎不同 所以花了一段时间Physics2D.Raycast(发射位置, 发射方向,距离);这个很...原创 2020-04-20 21:16:10 · 2765 阅读 · 0 评论 -
unity掉血给更多玩家回馈效果的实现
我们在LOL或者一些小游戏中 可以发现 掉血不是简单的血量降低这是我在拳皇里截的一个图我们可以看到每次 当绿色的血瞬间掉下去之后 会有一个比较模糊的红色慢慢减下去这样可以给玩家更多的回馈下面我介绍一下这个的实现首先因为我用的是2018版本的unity 其中的Image没有设置模式的选项所以我就用Slider来实现了这是我的父子关系 其中的greenblood和redblood都是...原创 2020-04-19 10:42:58 · 612 阅读 · 0 评论 -
用unity做超级超级简单的换肤效果
之前在我还是刚接触游戏开发的小白的时候 我就尝试过用UGUI的Toggle来实现换肤只不过当时因为只是比较有限 我就用了重新实例化出一个新物体销毁原来物体的方法 这样既消耗内存 同时容易出现意想不到的问题这篇博客介绍一个超级超级简单的换肤功能的实现首先 我们先要有一个物体和对应他的材质如果有模型那样最好 没有的话可以create一个球之类的代替我这里用一个cube来代替 然后自行创建了...原创 2020-04-19 10:08:58 · 2137 阅读 · 2 评论 -
unity开发项目过程遇过的坑以及一些小技巧
最近一直在准备计设的比赛 也是到了优化的阶段这两三个月过来总结到了一些经验 也遇到了一些坑在这篇博客给大家介绍总结一下首先是一个UGUI的问题这个问题让我困扰了一个小时 我几乎把所有方面都重新看了一遍 终于找到了这个问题在unity的UGUI中 UI是有优先级的 优先级高的 有先起作用举个例子 加入一个Button被一个Image挡住在game模式中运行起来 就会发现Button...原创 2020-04-08 20:14:39 · 371 阅读 · 0 评论 -
unity的声音的使用
之前我写过一篇很方便使用声音的管理器这篇博客全面的介绍几种播放声音的方法1.常见使用方法介绍(1) Play() //播放背景音乐(只能播放在同一实际内播放一种音乐)(2) PlayOnShot() //播放2D音效2.使用方法(1) PlayClipAtPoint() //播放3D音效想要正常的产生和听到声音必须有监听器AudioListener当我们想要控制背景音乐等...原创 2020-03-22 16:44:55 · 1517 阅读 · 0 评论 -
unity开发账号的注册登录(UGUI)
之前我写过一片关于UGUI的登录注册的博客 感觉大家对这个挺有兴趣的上一篇博客地址然后这篇博客多加了个注册的功能 可以同时注册多个账号并且都可以登录我们使用字典和InputField来实现 public Dictionary<string, string> regtable = new Dictionary<string, string>();//注册用户表...原创 2020-03-19 17:59:04 · 4354 阅读 · 2 评论 -
unity中在一个脚本中调用另一个脚本中的方法
在开发过程中很可能需要一些脚本之间的交互来实现想要的功能之前我写过一片关于使用代码来控制脚本的活性的博客就是使用Find方法来实现 也比较简单但是Find方法如果用于update中比较消耗性能这篇博客我们利用在unity中赋值的方法来实现控制脚本的活性而且可以来调用另一个脚本中的方法其实一个脚本就是一个新建的类 在代码中直接可以public声明然后在unity赋值 然后这个类中的方法...原创 2020-03-18 10:41:56 · 11688 阅读 · 0 评论 -
unity中第三人称游戏摄像头遮挡的处理
在游戏开发过程中难免会做第三人称游戏 如果地形中的设施比较多或者说做一个房间内的游戏 很可能我们调整好的视角 在游戏过程中会被墙体挡住主角这样游戏体验感就会大打折扣就像这样(遮住半个身子还是可以的 有的时候可能遮住整个玩家)这篇博客给大家介绍一个方法让摄像头自动调整到合适角度(缓慢)我们的想法是在我们调整好的摄像头的角度和玩家的正上方的位置上中间设置好多个摄像头的位置然后通过插值运算...原创 2020-01-22 09:43:31 · 1582 阅读 · 0 评论 -
unity制作警报模式的效果(Light)
最近在开发秘密行动(stealth)里边的警报系统效果挺有趣的这篇博客实现一下警报的效果 大致就是让一个灯光闪烁首先創建一個Light 我們的思路是动态新修改Light中的Intensity来实现修改灯光的闪烁这个值越大 灯光越亮(还有可以修改Range(半径)来控制灯光的亮度)我们只需要让它在一个范围之内动态变化即可我们创建一个脚本来动态修改public bool isAlarm...原创 2020-01-18 21:44:23 · 5595 阅读 · 1 评论 -
unity制作对话框
最近在准备计算机设计大赛的游戏方向的比赛,研究一些游戏中的游戏效果的实现在我们平时玩的角色扮演的游戏中比如GTA等 其中少不了故事情节 不少是用对话框来表达的这篇博客给大家介绍一下 简单的故事情节的讲述模式一般的都时按下鼠标左键继续的我的这个也一样然后检测到鼠标左键的按下 进行下一步而且用到打字机的效果实现 如果不清楚的可以去前面我的博客查看因为添加了打字的效果 代码稍微麻烦一点...原创 2020-01-15 10:40:34 · 4089 阅读 · 1 评论 -
unity最简单的动态添加排行榜
每个游戏中都会有一些排行比如传奇游戏中的战力榜 伤害榜 氪金榜等这里给大家一些最最简单的排行榜的代码 private List<int> score = new List<int>(); private int[] nums; private Text ScoreText; private string UItext=""; pr...原创 2020-01-09 21:17:56 · 1737 阅读 · 2 评论 -
unity实现打字机效果
在一些游戏的UI设计中,很多时候他的其实文字的出现是像打字机一样,一个字一个字的出现如果我记得没错的话在Dotween插件中有一个方法可以轻松实现这种效果下面我主要自己通过代码来实现一下这个效果实现过程这个的实现主要靠string类中的Substring(startposiiton,endposition)方法来实现这个方法的两个参数代表两个位置 截取l两个参数之间的字符串例如Str...原创 2020-01-09 17:36:09 · 3138 阅读 · 1 评论 -
unity高度解耦合事件的广播和监听
这篇博客介绍一个简单的事件的广播和监听的实现首先一个CallBack类public delegate void CallBack();public delegate void CallBack<T>(T arg);其中定义几个委托 分别是参数个数的不同然后创建几个枚举类型public enum EventType{ testshow}在下面就是主要代码其中...原创 2020-01-09 16:36:32 · 423 阅读 · 0 评论 -
c#(面向对象)基础总结(一)
在这篇博客中我大致总结一下c#的关于面向对象的知识点如下1.构造方法我们构造对象的时候,对象的初始化工作是自动完成的,但有时候我们初始化对象时是要有额外的工作要完成的,例如初始化对象存储的数据,构造函数实质上就是初始化对象所用的函数声明构造函数的方法和声明方法是一样的 但是该方法没有返回类型public class Crow { public Crow() { ...原创 2019-12-27 15:47:20 · 367 阅读 · 0 评论