自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (7)
  • 收藏
  • 关注

原创 unity json 处理

3.将代码(src里面的那个即如下图,多余的删除即可)拷贝到Unity工程中 即可开始使用LitJson。5.JsonUtlity存储null对象不会是null 而是默认值的数据 ,例如int类型的就是0。JsonUtlity 是Unity自带的用于解析Json的公共类。它是一个第三方库,用于处理Json的序列化和反序列化。LitJson是C#编写的,体积小、速度快、易于使用。1.将内存中对象序列化为Json格式的字符串。它可以很容易的嵌入到我们的代码中。字典的话:键会变成双引号。

2024-08-20 18:20:36 372

原创 PlayerPrefs类封装

【代码】PlayerPrefs类封装。

2024-08-20 10:23:21 134

原创 unity程序简易框架

场景切换模块:提供场景切换的公共接口。提供同步切换场景,异步切换场景并使用事件中心模块EventCenter提供加载进度信息。建立两个预制体,Canvas预制体和LoginPanel预制体,Canvas预制体结构如图所示。分别有四个不同层级panel。ScenesTest脚本,做的异步加载场景的测试。InputTest脚本,测试脚本EventCenter进行事件注册,接收输入方法通过回调函数进行业务逻辑处理。PoolMgrTest用于缓存对象的生成,鼠标左键点击生成Cube,鼠标右键点击生成Sphere。

2024-08-19 14:46:03 1026

原创 Unity AB包

ab包名 包大小 包内容md5字符串。

2024-08-16 14:58:45 511

原创 unity简易lua文件迁移工具

坏处:破坏项目稳定性整体性。"XLua/自动生成txt后缀的Lua"市面上的3种结合Lua热更新的开发方式。

2024-08-14 15:47:54 224

原创 xlua热补丁

unity c#代码。

2024-08-11 15:35:17 261

原创 Lua调用c#

【代码】Lua调用c#

2024-08-11 15:03:19 297

原创 c#调用Lua代码

当我们执行lua语言 require时 相当于执行一个lua脚本。xlua 提供的一个路径重定向的方法。允许我们自定义加载lua文件的规则。他就会执行 我们自定义的这个函数。目录下的.lua文件。

2024-08-09 18:58:38 340

原创 xlua使用

回顾第三节中提到的case,我们发现这种使用lua的方式必须预设好在什么地方使用lua才行,但是实际在开发过程中,我们的需求变化的非常迅速,很难预判的这么精准,这时候就可以使用热更新的方案。这个脚本中,我们定义了一个可以配置的List,List中每一个Item代表一个配置项,配置适用的stopword和对应的脚本,如果找到了对应的stopword,就执行其脚本。假如我们想实现一个输入框,用户每次输入内容后,可以点击按钮,我们的程序根据用户不同的输入,进入到不同的逻辑中进行处理。

2024-08-09 13:56:40 1170

原创 lua 基础

if 条件 then…elseif 条件 then…elseif 条件 then…通过 type 函数 返回值时string 我们可以得到变量的类型。lua中所有的变量申明 都不需要申明变量类型 他会自动的判断类型。–虽然可以通过.成员变量的形式得到值 但是不能是数字。lua中的一个变量 可以随便赋值 ——自动识别类型。Lua中是默认没有面向对象的 需要我们自己来实现。lua中 elseif 一定是连这些 否则报错。–还可以类似.成员变量的形式得到值。lua中使用没有声明过的变量。–成员变量 成员函数。

2024-08-05 16:10:41 469

原创 Unity——浅谈AB包(AssetBundle)

AB包全名AssetBundle(资源包)。是一种Unity提供的用于存放资源的包。通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,并且可以有选择地加载内容。

2024-08-05 14:41:47 858

原创 xcode使用

在"Target Membership"(对象成员)区域中就可以选择需要联系的对象,此外,也可以在项目编译器中的相关对象中,选择"编译阶段"选项卡,然后将该文件拖动到Compile Sources构建阶段上面,这样,当这个对象在编译的时候,会自动将该文件一同编译进去。因此在没有必要的时候请不要随意改变这个选项卡中的内容,不过工具区域中的快速帮助检查器则提供了每个设置的详细帮助信息以及效果,要。这些设置可以是作用于全项目访问的,也可以是作用于特定对象的,同时,也可以为某个特定的编译配置设置一个单独的值。

2024-08-02 17:42:51 1024

原创 TCP相关细节

服 务 端 会 记 录客 户 端 最 后 一 次 发 送 P I N G 消 息 的 时 间 , 如 果 很 久 没 有 收 到 (比 如 3 分 钟 ) , 就 假 定 连 接 不 通, 服 务 端 会 关 闭 连 接 , 释放系统资源。一 般 情 况 下, 一 个 端 又只能由一个进程独占,假设服务端程序都绑定了1234端又,若开启两个服务端程序,虽 然, 第一个开启的程序能够成功绑定端又并监听,但第二个程序会提示“没有设 定端又复用, 绑定会失败,提示端又己经在使用中,只好等十几分钟再重试了。

2024-06-15 16:06:20 1208

原创 socket收发数据的处理

readBuff[0] 代表缓冲区的第1 个字节,readBuff[1] 代 表 缓 冲 区 的 第 2 个 字 节, ( readBuff[1] < < 8 ) 代 表 将 缓 冲 区 第 2 个 字 节 的 数 据 乘 以 2 5 6 , 中 间的“|” 代表逻辑与,在这里等同于相加。因为我们规定必须使用小端编码,一个简单的办法 是,判断系统是否是 小端编码的系统,如果不是,就使用Reverse() 方法将大端编码转换为 小端编码。(pbyte+1)<< 8),如果是大端编码,返回的是(

2024-06-15 14:31:54 1043

原创 unity实现一个大乱斗

在如下的代码中,“delegate void DelegateStr(string str)” 创建了一个名为“Delegatestr" 的delegate 类型,它可以引用带有一个string参数、返回值类型为void 的方法。其中:“ Move” 代表这条协议 是移动同步协议,“127.0.0.1:1234” 代表了客户端的身份,“10,0,8〞三个值代表目的地的 坐标。结合委托的知识,客户端程序提供各种消息类型(通过消息名区分)的处理方法,网络 模块解析消息,将不同类型的消息派发给不同的方法去处理。

2024-06-12 18:43:48 683 1

原创 unity(select)

服 务 端 调 用 S e l e c t , 等 待 可 读 取 的 S o c k e t , 流 程 如 下。服务端使用主循环结构while(true){…初 始化 clients列 表。初始化 listenfd。

2024-06-11 19:52:12 282

原创 socket(poll)

由于客户端断开后,ReadClientfd 会删除clients列表中对应的客户端信息,导 致clients列表改变,而RcadClientid 又是在foreach (ClientState s in clients.Values)的循 环 中被 调 用 的, clients 列 表 变 化 会 导 致 遍 历 失 败 , 因 此 程 序 在 检 测 到 客 户 端 关闭 后 将 退 出 foreach 循环。如果设置较长的超时时间,服务端 将无法及时处理多个客户端同时连接的情况。Poll 的参数说明。

2024-06-11 18:21:53 778

原创 unity 简易异步socket

由于异步回调是在其他线程执行的,如 果在BeginReceive给text.text赋值,Unity会 弹出“get isActiveAndEnabled can only be called from the main thread”的异常信息,所以程序只给变量recvStr赋值 , 在主线程执行的Update 中再给text.text 赋值(如图2-5所示)。对应的End- R e c e i v e 的原 型 如 下, 它 的返 回 值 代 表 了 接 收 到 的 字 节 数。

2024-06-11 14:31:32 1023

原创 Unity3D入门基础知识汇总

右上边可以切换布局。左边选择Shaded wireframe,可以看到3D物体的都是由三角形组成的。

2024-06-06 11:37:07 1196

原创 unity基础三

video直接放在plane上面的video player组件即可,脚本也挂在plane上面。不但控制着组件的旋转、位置、缩放并且还控制着组件间的父子关系。做了一个游戏里面看电视的功能,没什么难度,说一点。屏幕用的plane模型,直接贴在TV前面。depth(深度)值越高,越优先显示。需要商城下载一点素材。

2024-06-05 16:27:33 315

原创 热更新简述

当需要热更新时,让进程1调用fork函数,系统会复刻一个与进程1一摸一样的进程2,两个进程共同监听8001端口。如图9-21所示,需要热更新时,开启一个新版本的逻辑进程(图中的game2),让网关把旧连接的请求转发给game1(图中的①)、把新连接的请求转发给game2(图中的②)。利用fork、exec函数实现进程切换,原理:fork和exec函数有一个重要的特性,即可以让复刻后的进程和新开启的进程继承原进程的文件描述符,因此新进程也可以直接访问原进程监听的端口的socket。

2024-06-05 14:55:49 408

原创 【协程】协程的设计原理

NtyCo实现了一个 IO 异步操作与协程结合的组件。

2024-06-04 18:47:10 623

转载 skynet框架应用 (六) 服务调度

​ 每次使用skynet.fork其实都是从协程池中获取未被使用的协程,并把该协程加入到fork队列中,等待一个消息调度,然后会依次把fork队列中协程拿出来执行一遍,执行结束后,会把协程重新丢入协程池中,这样可以避免重复开启关闭协程的额外开销。以上做法是不正确的,在skynet.start函数中的服务初始化代码不允许有阻塞函数的存在,服务的初始化要求尽量快的执行完成,所有的业务逻辑代码不会写在skynet.start 里面。当然,一个好的服务端,肯定不能一直出现中断掉的协程。

2024-05-11 09:06:30 147

转载 skynet框架应用 (五) 服务别名

​ 每个服务启动之后,都有一个整形数来表示id,也可以使用字符串id来表示,例如::01000010,其实就是把id:0x01000010转换成字符串。​ 但是这个数字的表示方式会根据服务的启动先后顺序而变化,不是一个固定的值。如果想要方便的获取某个服务,那么可以通过给服务设置别名来。​。

2024-05-11 08:44:39 165

转载 skynet框架应用 (四) 服务类型

​ 调用queryservice时,也可以选择是否传递第一个参数true, 表示查询的是当前skynet节点的全局唯一服,还是所有节点的全局唯一服。第一次创建唯一服,返回服务地址,第二次创建的时候不会正常创建服务,只是返回第一次创建的服务地址。​ skynet中的服务分为普通服务与全局唯一服务。​ 每调用一次创建接口就会创建出一个对应的服务实例,可以同时创建成千上万个,用唯一的id来区分每个服务实例。全局唯一的服务等同于单例,即不管调用多少次创建接口,最后都只会创建一个此类型的服务实例,且全局唯一。

2024-05-11 08:32:43 82

转载 skynet框架应用 (三) 构建服务的基础API

​ 以上出现找不到logger.so的情况,其实不仅仅是这个模块找不到,所有的模块都找不到了,因为在config包含的路劲conf.path中,所有的模块路劲的引入全部依靠着相对路劲。也就是在skynet.start之前运行。另一种方式启动想要的服务,可以在main.lua运行后,在console直接输入需要启动的服务名称.1、预先加载的环境变量是在conf中配置的,加载完成后,所有的service都能去获取这些变量。​ 4、环境变量设置完成后,及时服务退出了,环境变量依然存在,所以不要滥用环境变量。

2024-05-11 08:08:00 108

转载 skynet框架应用 (二) 搭建skynet

原文链接:https://blog.csdn.net/qq769651718/article/details/79432809。我们要运行的的客户端是example/client.lua 这个lua脚本文件,那么首先你要有一个lua虚拟机程序。​ 注意:如果安装失败,请先安装一下只支持库。

2024-05-10 13:54:54 115

转载 skynet框架应用 (一) skynet介绍

​ 每个服务都是严格的被动的消息驱动的,以一个统一的 callback 函数的形式交给框架。强隔离性: Actor中的方法不能由外部直接调用,所有的一切都通过消息传递进行的,从而避免了Actor之间的数据共享,想要观察到另一个Actor的状态变化只能通过消息传递进行询问。是一个轻量级的为在线游戏服务器打造的框架。状态(state):Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等问题。二、一个服务向另一个服务发送的消息的次序是严格保证的。

2024-05-10 13:43:10 72

原创 unity基础(二)

当使用Unity的LoadSceneMode.Additive时,开发人员可以在当前场景中加载一个新的场景,而不需要卸载当前场景。//这个是获取真正的激活状态,就是是否显示出来了 例如自己显示否跟父物体也有关 这个包含了。//Asset路径 移动端 主机游戏:可读 不可写 pc端:可读可写。// Assets下面的streamingAssetsPath路径。//只是激活状态的勾有没有打上 也就是只判断自己。//获取脚本挂载的游戏物体。//场景中最外层的游戏物体。//场景是否加载完成。

2024-05-07 09:39:38 609

原创 unity基础(一)

通过按照上述步骤,在脚本执行顺序列表中将 ScriptA 移动到 ScriptB 之前,然后保存设置,就成功地设置了脚本的执行顺序。在 Unity 中,如果有多个脚本,并且它们之间的执行顺序很重要,可以通过编辑器设置来确保它们按照自己期望的顺序执行。通过在 Unity 编辑器中设置脚本的执行顺序,可以确保它们按照自己期望的顺序执行,从而有效地管理项目中的脚本执行逻辑。这样,可以确保一个脚本在另一个脚本之前执行,也可以在出现的面板中点击+号,选择要设置顺序的脚本。这样就成功地设置了脚本的执行顺序。

2024-05-06 09:18:09 997

原创 代码事件派发机制(观察者模式)

通过 AddListener 方法可以为指定事件名称注册一个事件监听器,而 Dispatch 方法用于派发事件并通知相应的监听器。在 dispatch() 方法中,我们检查指定事件名称的监听器列表是否存在,然后依次调用每个监听器函数,并将事件数据作为参数传递给它们。在实际的应用中,你可以根据需要扩展和定制事件调度器,添加更多的事件和监听器,以实现更复杂的业务逻辑。最后,在示例的最后部分,我们通过调用 dispatch() 方法模拟触发了两个事件,然后相应的监听器函数被调用并处理事件。

2023-10-07 11:21:55 423

原创 随机算法了解

伪随机数生成器是确定性的,它们的输出是基于一个固定的种子或状态值。因此,如果你需要更可靠和高质量的真随机数,建议使用专门的硬件设备或第三方真随机数服务来获取随机数。请注意,rand.Read() 函数在获取真随机数时可能会阻塞,这取决于底层操作系统的实现和可用的随机源。线性同余算法是一种常见的伪随机数生成算法,它可以生成一系列看起来随机的数字序列。因此,在实际应用中,如果需要高质量的伪随机数序列,建议选择更复杂和安全的伪随机数生成算法,或者使用真随机数生成器。c:偏移量,用于控制序列中的移动。

2023-10-07 10:54:56 494

转载 【idea错误解决】Error:java: 不再支持源选项 5。请使用 6 或更高版本。

NO1.点击File—>Project StructureNO2.点击左侧栏Modules–>找到对应的language levelNO3.保存以上修改,点击File–>Settings以上操作即可解决idea报的此类错误

2021-03-10 11:22:55 538

原创 web开发 java基础(十)(Ajax&json&redis)

1. AJAX概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML异步和同步:客户端和服务器端相互通信的基础上客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。 * 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。 Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 [1] 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这

2021-03-08 11:48:02 8

原创 简单PHP代码实现一个orm

<?phpabstract class Model { protected $pk = 'id'; protected }

2021-03-02 15:38:04 304

转载 PHP7垃圾回收机制详解(附GC处理完整流程图)

垃圾回收:简称GC。顾名思义,就是废物重利用的意思。说垃圾回收机制之前,先接触一下内存泄漏。内存泄漏:某大神重口味充满画面感的形象解释:大概意思就是申请了一块地儿拉了会儿屎,拉完后不收拾,那么那块儿地就算是糟蹋了,地越用越少,最后一地全是屎。说到底一句,用了记得还。一定程度上说,垃圾回收机制就是用来擦屁股的。c语言垃圾回收机制:如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是手动垃圾回收,一般都是大神用这种

2021-03-01 16:26:08 351

转载 彻底解决Intellij IDEA中文乱码问题

关于JAVA IDE开发工具,Eclipse系列和Intelli IDEA是大部分公司的主要选择,从开发者的选择角度,Intellij IDEA似乎比Eclipse系列更受欢迎一些。当我们使用Intellij IDEA开发时,我们发现出现中文乱码问题,造成中文乱码的根本原因时开发工具和系统环境编码格式不匹配,本篇采用理论结合实际的角度,彻底解决该问题。一 Intellij IDEA乱码问题重现如下图所示,Intellij IDEA显示中文为乱码。二 解决问题(一)问题识别根据Intellij

2021-02-07 11:33:53 469

转载 怎么理解PHP代理模式

本篇文章主要给大家用实例代码来详细介绍PHP代理模式。在前面的文章中,我们已经给大家简单介绍了PHP代理模式的基础概念,相信大家对代理模式也有了一点了解。本节内容就结合具体的代码示例,给大家介绍PHP代理模式。代码如下:/* * 代理模式 *///代理抽象接口interface shop { public function buy($title);}//原来的CD商店,被代理对象class CDShop implements shop { public funct

2021-02-04 18:14:35 140

转载 为什么明知违法,互联网大厂还在提倡996?

“互联网大厂又不差几个钱,干嘛不能多招几个人,非要让员工996 ?”1 效率诅咒所有公司的本质就是追求效率。虽然有些公司未必能理解这句话,但他们本质上还是在追求效率。从早些年某些厂房24小时不停工,到某些物流仓储公司投入重金采用机器人分拣,从西贝莜面村优化菜单提高翻台率,到互联网公司强行996解除35岁以上的员工,本质上没有任何区别,都是在追求效率。差异的是,有些合法,有些不合理,有些不合法。‍‍为什么不是传统公司,反而看上去很高科技的互联网公司在 996?因为传统公司大多是一个完整的价值.

2021-01-19 11:22:05 859

转载 日志处理两大生态Splunk和ELK深度对比

随着Splunk越来越被大家熟知和认可,现在市面上也不断涌各种同类产品,作为大数据搜索界的翘楚Splunk和ElasticSearch,绝对值得我们去学习,探索和使用,因此为了造福Splunk的铁粉和新粉们,小编特邀了Splunk的资深架构师,江湖人称“陶指导”的陶刚为大家就架构,功能,产品线,概念等方面将Splunk和ElasticSearch做了一下全方位的对比,希望能够给大家在制定大数据搜索方案的时候有所帮助。陶刚在Splunk上海担任资深架构师,负责数据采集和云平台产品的技术架构。 拥有丰富的企业

2021-01-06 10:15:06 1027

资料.rar redis java jar包 window下redis软件

window 的redis软件 redis的jar包

2021-03-08

java_json_lib.rar

java的json解析 lib

2021-03-04

lib.rar资源包~~~~

jstl包

2021-02-05

简单登录代码 java

简单的java的一个登录代码 案例

2021-01-03

JavaEE7-api手册

JavaEE7手册

2021-01-02

jsoup-1.11.2.jar JsoupXpath-0.3.2

java的两个包 JsoupXpath-0.3.2 jsoup-1.11.2 解析xml

2020-12-26

java jdbcTemplate 资源及实例代码

spring 包 druid包 cp3包 数据mysql链接包

2020-12-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除