自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(372)
  • 收藏
  • 关注

原创 Lambertian概念

具体来说,一个Lambertian表面会在所有观察方向上表现出相同的亮度,而不论观察角度如何。换句话说,从不同角度看,表面的亮度一致。是指一种表面反射性质,用于描述表面在各个方向上均匀散射光线的行为。这个概念源于物理学家。最近在看Unity文档,在学习漫反射Shader中看到Lambertian的概念。反射描述了一种理想的均匀漫反射现象,适用于描述那些光线被随机散射的表面。,他在1760年提出了相关的理论。

2024-10-24 23:55:59 205

原创 Gorm操作数据库,有和没有WithContext的区别

比如,如果用户请求已经取消,你可以随时停止相关的数据库操作,避免浪费资源。会直接执行操作,而不会受到外部上下文的控制。这意味着这些数据库操作在正常情况下会执行完毕,但你无法控制操作的超时、取消等行为。:你可以设置超时时间,如果操作在指定的时间内没有完成,将会自动取消。:当你开发Web服务时,HTTP请求的生命周期是有限的,用户可能会取消请求或者请求超时。时,操作可以被取消或在超时后自动中断,避免长时间阻塞或耗时操作影响整个系统的性能。对象,这个对象提供了对操作生命周期的控制,包括超时、取消等功能。

2024-10-18 16:37:30 449

原创 Redis在服务器启动的日志问题

{"@timestamp":"2024-09-02T18:36:23.461+08:00","caller":"redis/durationhook.go:152","content":"[REDIS] slowcall on executing: incr zero-core:commonpay-snowflake:work-id","duration":"532.4ms","level":"slow"}{"@timestamp":"2024-09-02T18:36:23.640+08:00","cal

2024-09-02 19:14:00 1043

原创 Unity脚本一键修改所有预制体

如果项目从2022之前的版本升到2022,那么Text组件的字体文件会自动改为LegacyRuntime.ttf文件。需要将prefab对象修改为脏对象,AssetDatabase.SaveAssets()才能成功。但是在Unity2022之后,Text组件就被弃用了,内置字体Arial也移除了。预制体中的Text组件默认是使用Unity的内置字体Arial。其中LegacyRuntime.ttf文件是没有中文的。所以我们需要将所有预制体的Text组件一键替换为。

2024-08-13 16:12:01 485

转载 Unity使用Async Await异步unitywebrequest加载streamingAssets文件,取代WWW和协程

【使用】如您所见,像这样使用async await可能非常强大,尤其是当您像上面的LoadModelAsync方法中一样开始组合多个异步方法时。请注意,对于返回值的异步方法,我们使用Task的通用版本,并将返回类型作为通用参数传递,就像上面的GetAssetBundle一样。

2024-08-07 16:33:57 247

原创 SourceTree配置多个不同Remote地址的仓库

Tips:既然不需要到id_rsa_repo1相关文件,那我们为什么还去创建他,因为我们可以经过这样的对比来了解在不同的仓库下的配置处理,这样之后如果想把Gitlab配置成SSH,就知道如何处理了。这里的“id_rsa_repo1.pub”是为Gitlab准备的,但是我们拉取Gitlab上的仓库是使用用户名和密码去拉取,所以这个暂时是不需要到的。现在我们在SourceTree添加Github账户,点击“工具”-》“选项”-》“验证”切页,然后再点击“添加”,则出现以下界面。

2024-08-06 19:01:20 980

原创 解决CORS问题的技术点的原理总结

跨源请求中,浏览器在发送一些特殊类型的请求(如带有自定义头部的请求或非简单请求)之前,会发送一个预检请求(OPTIONS请求)。再来说说这个词的意思,origin 'null'可能表示请求的来源是非明确的或未知的,这可能是因为请求没有正确地设置Origin头部,或者是因为请求是从本地文件系统(file://)发起的。本人在毕业之后主要是从事游戏开发的客户端相关工作,由于游戏引擎的跨平台功能,所以在游戏开发完成之后,需要发布的平台经常会包含Web平台(包括desktop Web、Mobile Web)。

2024-07-25 14:55:01 1118

转载 Vulkan 简介

在一些复杂的应用场景,依然会遇到无法解决的问题,很多时候经常是驱动的一厢情愿,应用并不为此买单。前文已经说了,Vulkan的优势在于显式控制和多线程功能,这些功能使我们能够在更少的CPU时间内将更多命令推送到GPU,并具有更精细的成本控制。来自图形行业各个领域的Khronos成员都同意需要新一代的跨平台GPU API,由此,继承了Mantle”遗志“的Vulkan诞生了。如果OpenGL的单线程渲染让你的应用陷入了的性能瓶颈,你希望通过多线程充分发挥CPU能力,Vulkan非常适合。

2024-07-17 17:58:06 882

转载 可视化的OpenGL简史

让人不禁叹息。于是想回顾一下OpenGL一路走来的历程。下面这个气泡图是我用制作的,它显示了OpenGL家族历次版本更新的时间线,鼠标指向版本可以弹出tips,显示版本特性。

2024-07-17 14:23:30 88

原创 HybridCLR原理中的重点总结

用HybridCLR的官网上的一个简介来引出重点。HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案。HybridCLR扩充了il2cpp的代码,使它由纯AOTruntime变成混合runtime,进而原生支持动态加载assembly,使得基于il2cpp backend打包的游戏不仅能在Android平台,也能在IOS、Consoles等限制了JIT的平台上高效地以混合模式执行,从底层彻底支持了热更新。

2024-07-10 14:59:57 1329

原创 API的定义理解

在程序员的日常工作中,“API”这个词在程序员的口中重复的次数,绝对是名列前茅的。但是对刚开始工作的新人来说,API这个概念还是比较模糊。确实,API这个概念是随着语义环境而不一样的,所以会让人迷惑。下面就总结出我理解的三个API的含义。// 飞行的方法void fly();// 下蛋的方法void egg();比如,两个程序员聊天,程序员1说:“你今天写的API(接口)好了没有,我需要调用你的API(接口)来测试一下”。这里的API(接口),指的就是我们自己写的代码。

2024-07-05 17:24:09 227

转载 CAP定理的含义

分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的。

2024-07-04 17:48:15 39

转载 IL2CPP是什么?

Unity3D 想必大家都不陌生,独立游戏制作者们很多人都在用它,甚至一些大公司也用在很商业的游戏制作上。Unity3D最大的一个特点是一次制作,多平台部署,而 这一核心功能是靠Mono实现的。可以说Mono是Unity3D核心的核心,是Unity3D跨平台的根本。但是在2014年年中的时 候,Unity3D官方博客上却发了一篇“The future of scripting in unity”的文章,引出了IL2CPP的概念,感觉有取代Mono之势。

2024-06-25 14:45:17 154

转载 Unity接入Google登录超详细流程

特别说明:通过Unityhub安装的Unity,需要安装对应版本所需的JDK、SDK、NDK,我们默认使用Unity自带的,不需要使用自己下载的,否则可能会导致打包失败的问题。,这个插件需要下载,external-dependency-manager-1.2.175.unitypackage需要导入自己项目。,但是这个版本目前有些问题,IOS打包报错,因为IOS部分代码没有更新。3、创建UI,一个登录按钮,一个显示用文本,一个挂载脚本的空物体。4、在“凭据”页面上,创建一个 Web 类型的客户端 ID。

2024-06-25 11:53:36 940 1

原创 Unity的ScrollView滚动视图复用

其中还有更多的细节,就未能一一提及。当然还有更多有待优化的逻辑,需要大家来指出。

2024-06-24 17:38:05 1463

原创 Protobuf使用proto文件生成C#代码

Protobuf作为一个中间数据格式,可以把一个proto文件编译为多个语言,使得程序员可以把proto文件约定的数据格式转化为二进制,然后发送数据,收到数据的一方可以把收到的二进制转化为另一个语言的数据格式。另一方:Proto文件->通过proto工具(比如proto.exe和protoc-gen.go.exe)->生成与proto文件对应的Go语言的代码数据文件。一方:Proto文件->通过proto工具(比如proto.exe)->生成与proto文件对应的C#语言的代码数据文件。

2024-06-24 15:44:42 937

原创 Unity的Excel转表工具

2.excel文件可以选择多种数据类型:int、float、string、一维(int、float、string)、二维int、Map(int/int、int/string、int/float、string/int、string/float)4.导出二进制(Unity使用),导出json(服务器使用)。该Excel工具主要由Python语言完成,版本为3.x。3.多个字段串联作为一个Key、单个字段作为一个Key。1.转换后的数据存储结构为二进制。

2024-06-24 14:56:03 497

原创 Unity处理Socket粘包拆包

现在游戏协议的数据格式基本上都是用protobuf协议格式,而protobuf最后会转换为二进制,所以这个例子实现逻辑的也是二进制的处理。处理粘包拆包的逻辑主要是在DecodePackage方法中。

2024-06-21 18:27:55 340

转载 Unity 如何打造”大厅+子游戏”架构

主框架工程其实就是整个游戏的主体,包括对子游戏提供的各种功能服务+热更新框架主体+大厅功能的逻辑(大厅也可以看作是基于框架的一个”游戏”), 主框架内置好Lua热更新机制,同时提供支付,广告等SDK的服务支撑,主框架工程中Lua相关的包括大厅,也可以热更,C#编写的不做到热更新。在主框架工程开发”大厅的逻辑功能”,做好加载子游戏的lua脚本机制,当用户点击了某个子游戏,调用增量下载更新子游戏,按照子游戏的入口规则加载lua脚本,进入子游戏后,就有子游戏自己来加载自己要的资源。

2024-06-21 17:15:48 49

转载 漫谈gRPC

gRPC则不同,则是面向微服务设计的,netty可以作为gRPC的底层通信框架,gRPC本身还支持很多微服务中的概念,如前面提到的服务发现注册,链路追踪等。本文概括性的介绍gRPC,包括gRPC的起源,核心特性,生态体系,以及一些知名开源软件对gRPC的使用,最后总结gRPC与netty、dubbo等框架的区别,目的是让读者从整体上对gRPC有一个相对全面的认知。拥有统一的跨平台RPC基础架构,可以在整个系统范围内推广效率,安全性,可靠性和行为分析,这对于支持Google的惊人增长至关重要。

2024-05-22 21:00:19 141

转载 Xcode打包遇到的坑 Command PhaseScriptExecution failed with a nonzero exit code

但是这里注意一下,我用最新的Xcode 14.2的版本并没有换构建方式的选项了,我改为13.4.1的版本后就有了,这个应该是版本抛弃了,如果遇到请绕道而行,不要一直卡这。这边可以看到它报错是UnityFramework里的,所以你点击是无法返回具体的报错情况的,完成以下操作,把打包程序替换为UnityFramework就可以了,操作如下。这里补充一点,一般来说你要是打包的时候遇到这个问题,xcode只会返回报错点击不会告诉你具体位置,如图。我的具体报错是这样的,我对mac系统不怎么熟悉,只有手机截屏了。

2023-11-03 15:46:50 1121

原创 GoLang忽略文件夹

在使用GoLang开发的过程中,我们可能在搜索查找时,需要屏蔽一些日志文件或者编译文件,基于这样的需求,我们可以在GoLang编辑器中右键选择对应的文件夹-》Mark Directory as-》Ecluded。然后,再在显示的文件夹中右键选择需要显示的对应的文件夹-》Mark Directory As-》Cancel Exclusion。如果需要取消忽略,我们先在Project视图上右键-》Show Ecluded files。最后,再右键Project视图上右键,这样就可以忽略掉对应的文件夹。

2023-11-01 11:11:43 629

转载 Windows平台下搭建自己的Git服务器

找到Git目录下的data文件下的 gitblit.properties 文件,用“记事本”或文本编辑器打开。找到 server.httpPort,设定http协议的端口号(注意:所使用的端口不要与已有端口冲突)。这里就设定你的服务器IP。在命令窗口中,输入java命令:java -version,回车,如果出现版本信息,说明安装成功。如果公司要搭建自己的 Git 服务器,可以使用 Gitblit 这个开源的 Git 服务器。找到 gitblit 目录中的 gitblit.cmd 文件,双击运行。

2023-08-07 18:54:38 1178

原创 Git push远程推送失败解决方式

在Git push的前提是已经clone了一个项目下来。也就意味着有这个Git仓库,而且已经有了对应的用户。我们的Git仓库名:test.git。我们的Git用户名:user。这样就可以成功push了。

2023-08-07 17:10:34 2677

原创 在Linux服务器上搭建Git

我们需要将客户端的公钥(id_rsa.pub)上传到服务器的/hone/git/.ssh文件夹中。执行sudo apt-get install git。2、新建git仓库目录和用户(服务器中处理)4、将客户端公钥保存到服务器(客户端处理)1、在服务器上安装Git(服务器中处理)在服务器上执行git --version。则,已经安装Git,跳过此步骤。3、添加Git仓库(服务器中处理)这三个操作,再来一次。服务器:Ubuntu。

2023-08-07 16:42:00 651

原创 Unity视角拉近时物体缺失的问题处理

就是在场景的不断编辑中,突然又一次打开场景,再拉近或拉远场景视角时,会出现场景中的对象会显示不全的问题。出现这个问题的原因是Unity生成的场景对应的文件中的"orthographic"属性被修改成了"true"。只要找出对应的(或者全部的)文件内的"orthographic"属性被修改成了"false"。以上的文件夹内会有某个文件的"orthographic"属性被修改成了"true"。出现了这样的情况会让场景的预览很不友好。这样就可以修改好这个问题了。

2023-07-16 23:16:26 3652 1

原创 Rider破解流程

选择Start trial,然后打开一个空项目。我测试使用的版本是2022.2.4。如果没有反应,则可以手动换出插件。下载之后选择好安装目录和配置。之后,会提示插件安装成功。一、官网下载Rider。

2023-07-15 00:00:36 3975 1

原创 protobuf全局环境搭建

npm install --save protobufjsnpm install --save protobufjs-cli

2023-05-24 17:32:24 1728

转载 Python安装pip

Python安装pip,可以直接安装Python2.7.14

2023-02-20 19:57:10 625

原创 游戏开发框架之数量级管理(TS脚本)

在游戏开发中,为了让用户有更好的体验和数值上的爽感或者策划hold不住数值,经常可能会使用到较大的数量级,大到系统的int或float类型都存储不下这样大的数值,比如:100万亿

2022-08-16 11:00:57 1627

原创 Promise的Catch报错总结

先定义一个PromiseTest.html文件:}, 1000)}).then((res)=> { // 成功console.log("成功1"+res);//当我们需要在传参给后面的then时,可以使用return来返回值},(err) => { // 失败console.log("失败1"+err)throw new Error('抛出一个错1') //throw和return一样会返回后面的值,所以当我们需要在传参给后面的catch时,可以使用throw来返回值}...

2022-08-15 17:44:13 1626

原创 Python对比两个文件夹的文件差异并导出差异

python脚本:# -*-coding:utf-8-*- #=============================================================================== # 目录对比工具(包含子目录 ),并列出# 1、A比B多了哪些文件 # 2、B比A多了哪些文件 # 3、二者相同的文件: md5比较#============================================================

2021-10-21 16:53:00 3584 2

原创 CocosCreator主角保持屏幕中间

准备工作我们创建一个test.scene,场景中包括:三个摄像头——第一个显示map,第二个显示hero,第三个显示UI_2D地图节点——map,花地图主角节点——hero,红色spriteUI节点——UI,两个UI按钮如果想实现三个摄像头显示不同的节点,需要把在“项目设置”中增加“组”。map节点设置的“Layer”为“map”。hero节点设置“Layer”为“test”脚本设置将脚本绑定到Canvas,脚本的MapCamera属性...

2021-10-21 11:25:59 895

转载 es6模块与 commonJS规范的区别

文章转载自:https://www.jianshu.com/p/16af8b54384acommomJS模块:1、获得的是缓存值,是对模块的拷贝2、可以对commomJS模块重新赋值3、可以对对象内部的值进行改变es6模块:1、获得的是时时的值,是对模块的引用2、对es6模块重新赋值会报错3、可以对对象内部的值进行改变es6 {  export : '可以输出多个,输出方式为 {}' ,  export default : ' 只能输出一个 ,可以与expo

2021-10-20 19:23:58 172

原创 CocosCreator波浪Shader

waveEffect.effect:// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd.CCEffect %{ techniques: - passes: - vert: sprite-vs:vert frag: sprite-fs:frag depthStencilState: depthTest: false depthWrite: false ble

2021-10-20 18:59:59 1669

原创 二维数组中查找相邻的相同数据对象

MergeCtrl.ts:import { CellCtrl } from './CellCtrl';export class MergeCtrl { cellArr: CellCtrl[][] = []; constructor() { //初始化测试数据 this.cellArr[0] = []; let cellCtrl = new CellCtrl(); cellCtrl.setElementId("2")

2021-10-20 18:45:59 1390

原创 TypeScript反射机制动态创建类

前言在前一篇文章桥接模式与策略模式的区别与刘伟老师的桥接模式中,我们可以明白桥接模式处理得比较好的一个点是在于Java的反射机制。那么,假如我们需要再TypeScript中,来实现桥接模式的处理,需要怎么样来实现这个“反射”呢?注:在策略模式中,该文章的处理全部适用。思路反射机制:就是要实现通过一个Key值来创建一个类。那么在TypeScript中,普通的对象就有key:value的这样的格式,然后TypeScript编译后的源代码是JavaScript,而JS的类创建是通过原型

2021-10-20 17:25:59 5197 3

转载 桥接模式与策略模式的区别

文章转载自:http://www.blogjava.net/wangle/archive/2007/04/25/113545.html桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式。以下是它们的UML结构图。在桥接模式中,Abstraction通过聚合的方式引用Implementor。在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。从他们的结构图可知,在这两种模式中,都存在一个对象使用聚合的方式引用另一个..

2021-10-20 15:42:14 1432

原创 Python的基础使用

对于一般非专业使用Python的程序员来说,基本上使用python的用途就是:用来在*.zh文件中执行*.py文件或者在命令行直接执行*.py文件。那么基于这样的需求,我们非专业python的码农要如何来认识*.py文件中的基础模块和函数呢?通常的二八原则,我们可以掌握少数的基础知识,来完成大多数的基础工作。一、我们来认识模块在各个语言的认知中,我们都有模块的意识。例如:C++是用 include "*.h";来引入其他头文件(*.h),这里的头文件==模块。 Ja...

2021-10-20 15:20:58 177

转载 Entry name ‘classes.dex‘ collided

文章转载自:https://www.cnblogs.com/jiduoduo/p/13962924.htmlandroid studio打包的时候,mac下是好的 ,在win10下,则报entry name 'classes.dex' collided要在build.gradle加入一个项exclude 'classes.dex'

2021-10-20 11:45:43 2526

空空如也

空空如也

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

TA关注的人

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