- 博客(98)
- 收藏
- 关注
原创 C# const与readonly关键字的区别
关键字在C#中提供了一种简单而有效的方式来确保字段在初始化后保持不变,来维护数据完整性。关键字用于定义在对象创建后不能更改的字段。)有些相似,但也有显著不同。
2024-11-06 20:55:23
412
原创 Unity Canvas的三种模式
Screen Space - Overlay(屏幕空间 - 覆盖): 这是最简单的 Canvas 渲染模式。UI 元素在这个模式下将渲染在屏幕上的最顶层,不受场景中其他物体的影响。UI 元素的位置是相对于屏幕的,而不是相对于世界空间的。这意味着即使场景中有相机移动或旋转,UI 元素也会始终保持在屏幕的固定位置。这种模式适用于大多数 2D 游戏和简单的用户界面。Screen Space - Camera(屏幕空间 - 相机): 在这种模式下,UI 元素仍然是渲染在屏幕上的,但是相对于一个指定的摄像机。
2024-03-24 11:15:26
3361
原创 Unity编译报错Copying Assembly-CSharp.dll问题解决
突然想到自己电脑上安装了千牛客户端,然后试了下,卸载千牛后,果然没问题了,只能说有点坑呀。但是关闭各种杀毒软件,并且关闭windows安全中心的病毒和威胁防护,一开始去查资料发现可能是杀毒软件一直在后台读取文件的原因引起的。错,直接导致编辑器无法正常运行,必须重启才能正常运行。报错的情况依然存在,有时也可能会出现。于是看到网上网友说有个阿里旺旺软件。自带了一个流氓防护后台进程。
2023-11-25 14:56:25
689
原创 红黑树-自平衡二叉搜索树
红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它的节点可以是红色或黑色。这个颜色的设计是为了满足红黑树的五个关键性质,确保树保持平衡和高效地支持插入、删除和搜索操作。每个节点要么是红色,要么是黑色。根节点是黑色的。每个叶子节点(NIL节点,通常表示为黑色)是黑色的。如果一个节点是红色的,那么它的两个子节点都是黑色的。对于每个节点,从该节点到其后代任意叶子节点,经过的黑色节点的数量都相同。
2023-09-27 13:58:13
138
转载 Unity资源打包之Asset Bundle
原文链接:Asset Bundle的作用:1.AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;2.AssetBundle自身保存着互相的依赖关系;3.压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;4.把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;什么是AssetBundle可以归为两点:1,它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文
2021-11-19 15:04:29
1355
原创 NGUI 5 综合
1.UIDrawCall就是根据提供的数据(统一在UIPanel指派)进行渲染绘制。2.UIWidget拥有UIDrawcall mDrawCall和UIGeometry mGeo两个成员变量,其中UIGeometry就是对UIWidget的顶点vertices,uvs和color进行存储和更新。3.每一个UIWidget都有一个UIGeometry,UIGeometry完全由UIWidget维护,UIWidget的UpdateGeometry函数则是调用OnFill进行顶点信息的填充,每个继.
2021-10-20 00:12:32
124
原创 NGUI 4 (重点) UIPanel
UIPanel中的核心流程在LateUpdate方法中:void LateUpdate () //核心方法 更新所有Panel和DrawCall// 按顺序更新每一个Panel,list是一个静态的UIPanel列表,表明所有UIPanel公用只有一个。for (int i = 0, imax = list.Count; i < imax; ++i) list[i].UpdateSelf();//更新所有DrawCall for (int i = 0, imax = ...
2021-10-20 00:07:58
493
转载 关于Lua中的变量赋值
1.lua中表table的赋值实质为引用lua代码举例如下local TabA = {["a"] = 1,["b"] = 2}local TabB = TabA--将TabA赋值给TabBprint(TabA.a)print(TabB.a)TabB.a = 5--此处对表TabB进行操作print(TabA.a)print(TabB.a)print("~~~~~~~~~~~~~~~~~~~~~~~~~")local NumA = 1local NumB = NumANumB =
2021-09-03 09:44:42
1445
转载 Lua中的#
对字符串来说,#取字符串的长度,但对于table需要注意。lua的table可以用数字或字符串等作为key, #号得到的是用整数作为索引的最开始连续部分的大小, 如果t[1] == nil, 即使t[5], t[6], t[7]是存在的,#t仍然为零。对于这类tb[1],tb[2]....才能获取到正确的长度。local tab = {}tab[1] = 1tab[2] = 2tab[3] = nilprint(#tab)--结果为2local tab2 = {}tab2[1]
2021-09-03 09:28:46
3156
转载 Lua中,泛型for循环遍历table时,ipairs和pairs的区别
根据table型变量key是否为连续数字,如果是则称为数组型table,如果不是则称为非数组型table.事实胜于雄辩,接下来通过实验来区分两组迭代器的区别.首先给出pairs和ipairs在数组型table和非数组型table中的遍历效果: local testTable1 = {"a","b","c","d","e"} local testTable2 = {[1] = "a",["x"] = "b",["y"] = "c",[2] = "d",[8] = "e"}..
2021-09-03 09:26:04
591
转载 NGUI(3) UIWidget
本篇文章和大家介绍的是NGUI中的基础组件UIWidget,UIWidget是所有UI组件的基类,持有UI组件的大小、锚点、顶点、颜色,Alpha等所有跟渲染相关的属性。关键属性:protected Pivot mPivot //锚点protected Color mColor; //颜色protected int mWidth;//组件宽度protected int mDepth = 0;//显示深度,这个深度是相对于父节Panel的public UIGeometry geomet
2021-09-01 12:04:51
560
转载 NGUI(2) UIRect
UIRect源码分析UIRect是UIPanel和UIWidget的抽象基类,提供了一些共有的方法和共同的逻辑。其中最主要的逻辑是围绕Anchors更新位置,和提供了一些时序相关的抽象方法。AnchorPointUIRect首先内置了AnchorPoint这么一个内联类,并定义了四个AnchorPoint类型的变量,分别对应上下左右四个方向的锚点。其中有几个重要的字段:public Transform target; // 表示目标对象public float relative
2021-09-01 11:55:53
303
转载 c#List.Sort(比较的方法)返回值意义
一个值,指示要比较的对象的相对顺序。返回值的含义如下:越小的越排在前面。 值 含义 小于零 此实例按排序顺序在obj前面。 零 此实例与obj在排序顺序中出现的位置相同。 大于零 此实例按排序顺序在obj后面。 ...
2021-09-01 10:59:04
519
转载 NGUI 必读1 NGUI渲染基础机制
原文 NGUI三大基础机制:https://gameinstitute.qq.com/community/detail/109914本文介绍以NGUI的版本是3.6.0版本为基础基础介绍 NGUI的UIWidget, UIDrawCall,UIGeometry和UIPanel等基础脚本。ØUIWidget是UI的基础组件(UILabel,UISprite)的基类,含有组件的基本信息(width,Height,color锚点等)ØUIGeometry是UIWidget的几何数...
2021-09-01 10:52:38
349
转载 NGUI(1) UIDrawCall
之前看过一个博主说,研究代码一开始不能思路铺的太开,一开始应该从最核心的部分看起,然后一层一层的向外围展开,一次只看一个类或一个方法,别想看A的时候又想看B,遇到不懂的时候可以先放着,特别时遇到很复杂的调用关系的代码时千万不要深陷其中。从最核心的一小部分开始着手,比如看DrawCall 类的时候完全不管Widget和Panel,只关心这个类对外开放什么接口,需要什么数据等等。所以研究NGUI ,首先来看看UIDrawCall吧:下面是UIDrawCall的关键方法的介绍: 一.UpdateGe.
2021-08-31 16:06:37
241
原创 C++用类实现二叉排序树(也称二叉查找树,二叉搜索树)
关于用C++结构体实现的二叉树:https://blog.youkuaiyun.com/sindyra/article/details/103631960这里我们使用类来实现一个功能相对完整的二叉树,这个二叉树是根据值的大小构建的,从小到大分别是左节点,根节点,右节点的插入节点时,所以每次插入新节点时会从根节点开始,跟所有节点的值进行判断大小,最后插入到合适位置。二叉树节点类:#pragma on...
2021-08-31 11:49:45
1015
1
原创 VS下Unity的内置的Editor宏定义失效,导致Unity卡死
VS下Unity的内置宏定义失效导致走入了非Editor宏定义的代码,出现Unity卡死的现象,鉴于出现过这种情况,做个记录。看下VS的这个选项是不是选成Release了,改成Debug就可以了
2021-04-22 11:22:43
1141
1
原创 关于SVN 的--depth=empty和--set-depth的配合使用:
关于SVN 的--depth=empty和--set-depth的配合使用:假设有这么一个场景,我们想要svn check一个地址为:svn co svn://127.0.0.1/XXX/server下的gameworld目录下的monster和item目录,但是server目录下的其他目录不需要,这时,我们可以进行以下操作:(1)check server 目录,但是只check一个空目录:svn co svn://127.0.0.1/XXX/server --depth=empty se..
2021-03-16 16:29:23
2092
原创 Skynet(4)-Sproto协议的RPC通信
此博客案例是为方便自己查看,给的代码不全可能无法一下看懂,如果不了解Sproto协议的,可以先看下这篇文章:https://blog.youkuaiyun.com/sindyra/article/details/108423417这里我们主要挑出客户端与服务端实际通信时RPC案例讲解下,本案例是一个登陆注册的案例。1.首先是客户端向服务端发送请求:local login_args = {name="Bob",password="123456"}local str = request("login",log
2020-10-08 22:00:49
916
原创 ToLua require “socket“ 报错
当我们使用LuaFramework的时候,有的时候,我们不想要使用框架自带的C#实现的Socket通信,想要直接用luasocket,这个时候,我们用一句简单的:local socket = require "socket"然后发现,报错了:这个是因为默认ToLua是不开启luasocket的,其实也有相关的代码,在 LuaClient.cs 中设置了这个的开启,但是我们有时候不需要使用这个脚本,这时,只需把LuaClient中的启用luasocket的代码移到 LuaManager.cs
2020-09-06 18:17:54
1125
原创 Skynet(3)-Sproto协议的使用
Skynet(3)-Sproto协议的使用 文章整理和来源:https://github.com/cloudwu/skynet/wiki/Sproto1.首先看下Sproto的协议的格式:.Person { name 0 : string id 1 : integer email 2 : string .PhoneNumber { num...
2020-09-05 20:00:28
3090
2
原创 Skynet(2)-Skynet服务的启动
Skynet的examples目录下的config文件设定了main.lua为第一个启动的服务,启动一个服务,会先调用这个服务的skynet.start()函数,examples中的main.lua:local skynet = require "skynet"local sprotoloader = require "sprotoloader"local max_client = 64skynet.start(function() skynet.error("Server start"
2020-09-01 23:34:46
683
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人