自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 Unity框架TEngine转WebGL

首先,放上TEngine框架的地址:框架包含:Hybridclr(热更):;YooAsset(资源管理):;UniTask(异步解决方案):;Luban(支持大型项目的配表工具):;本地静态服工具:;转微信的官方github地址:微信开发工具地址:DoTween,Spine。

2023-11-20 15:32:04 365 1

转载 Unity发布WebGL坑之字体

但是汉字,日文等字体就完全不够了。在android系统是根据字体的文件名称来找字体的,但unity识别字体却是通过字体内部的设置来识别字体的,所以说,即使在anroid手机中有DroidSansFallback.ttf字体,也有可能unity找不到这个字体。如果游戏中一直都在使用A字体,突然要改为B字体,可以在A字体的FontNames里填入B字体名字,A字体的Incl.FontData不打勾,B字体的Incl.FontData打勾。关于Unity中的字体常用的有:内置字体,外部导入的字体,自定义的字体。

2023-11-20 15:09:08 493

原创 UniTask保姆级教程

安装方式:1.通过unity的PackageManager安装,需要一个支持git包路径查询参数的Unity版本 (Unity >= 2019.3.4f1, Unity >= 2020.1a21). 可以添加这个地址到PackageManager2.or addto如果你想设置一个目标版本,也可以使用*.*.*发布标记指定版本,例如#2.1.0可以这样,3.

2023-09-04 16:52:22 2035

原创 C#中的is和as操作符来转型

as:类型转换,和显示转型对比,简化写法,提升性能。CLR的(显示转型)类型检查增强了安全性,但无疑会对性能造成一定影响。这是因为CLR首先必须判断变量引用的对象的实际类型,然后,CLR必须便利继承层次结构,用每个基类型去核对指定的类型。由于这是一个相当常用的编程模式,所以C#专门提供了as操作符。is:检查对象是否兼容于指定类型,返回Boolean值true或者false。注意,is操作符永远不抛出异常。如果对象引用null,is操作符总是返回false。

2023-08-20 22:34:47 93

原创 Unity AssetBundle 工作流

跟随下面的步骤,开始assetbundle学习。更多关于每个部分工作流的详细信息,可在官方文档当前章节的其他页面查找。

2023-01-03 14:43:49 443 3

转载 详谈C#特性及应用

详谈C#特性及应用_菜鸟厚非的博客-CSDN博客_c#应用

2022-07-23 23:23:16 417

原创 Unity的Timeline学习随笔(随时添加记录)

Unity Timeline学习,基础知识,通用通道,自定义通道,新手引导

2022-05-24 23:54:52 622

转载 Unity官方Timeline教程

Unity社区教程上新 | 2019.3 Timeline的实际案例演示 - 技术专栏 - Unity官方开发者社区Timeline通用/扩展轨道的介绍与使用:Activation、Animation、Audio、Control、Signal Track、Cinemachine Track在Timeline窗口通过脚本自定义轨道:Track、Clip、Behavior、Mixer介绍Unity Tech提供的 - Unity技术专栏是中国Unity官方为开发者准备的中文技术分享社区,极简高效的markdow

2022-05-24 10:42:22 347

转载 通俗解释hash碰撞是什么以及如何解决

Hash如何存数据hash表的本质其实就是数组,hash表中通常存放的是键值对Entry。如下图:这里的学号是个key,哈希表就是根据key值来通过哈希函数计算得到一个值,这个值就是下标值,用来确定这个Entry要存放在哈希表中哪个位置。Hash碰撞hash碰撞指的是,两个不同的值(比如张三、李四的学号)经过hash计算后,得到的hash值相同,后来的李四要放到原来的张三的位置,但是数组的位置已经被张三占了,导致冲突。解决方法hash碰撞的解决方式是开放寻址法和拉链法。.

2022-05-17 15:47:28 7498 2

原创 C#中?、?.、? ?、? ?=的用法和说明

一、可空类型修饰符 ?引用类型能用空引用来表示一个不存在的值,但是值类型不能。例如:string str = null;int i = null;//编译报错为了使值类型也能使用可空类型,就可以使用“?”来表示,表现形式为“T?”。例如:int i?;//表示可控的类型DataTime time?;//表示可空的时间二、空合并运算符 ??用于定义引用类型和可空类型的默认值。如果此运算符的左操作符不为Null,则此操作符返回左操作数,否则返回右操作数。//当a不为空时返回

2022-05-17 15:01:32 6651 3

原创 C#高级主题(集合)

1.自定义集合,全部实现一遍(IList,ICollection,IDictionary,)2.索引符(支持索引)3.支持迭代器(IEnumerable,IEnumerate)4.深度复制和浅度复制5.比较类型比较:a.封箱和拆箱b.is运算符值比较:a.运算符重载(强大的技术,但应谨慎使用)b.IComparable和IComparer接口,它们可以采用标准方式定义比较对象的过程。.Net Framework中的各种集合类支持这种方式,这使得它们成为对集合中的对象进

2022-05-11 23:47:54 254

转载 如何在旧版本的 .NET Core / Framework 中使用 C# 8 的异步流(IAsyncDisposable / IAsyncEnumerable / IAsyncEnumerator)

C# 8.0 为我们带来了异步流,可以使用 async foreach,不过使用此语法需要 IAsyncEnumerable / IAsyncEnumerator 类型。本文介绍如何在旧版本的 .NET Framework 和旧版本的 .NET Core 中获得此类型。本文内容异步流所需版本安装 Microsoft.Bcl.AsyncInterfaces使用异步流定义支持异步流的方法使用 await foreach额外说明异步流所需版本异步流需要 .NET Core 3.0 及以上版本才

2022-05-11 09:56:54 503

转载 【Unity游戏客户端框架搭建】五、热更新

前言游戏上线后,难免会有一些测试阶段没发现的bug,bug这东西,可大可小。如果出现重大bug,而又没有热更技术,那么我们为了修复bug就只能强制玩家去商店下载新包,那造成的玩家流失是非常可怕的。而如果有热更,我们在发现问题的当天,只需要发布一个小补丁包,就能将问题修复了。目录热更新的原理 热更新的基本流程热更新的原理Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新。Unity提供可以热更的方案就是AssetsBundle(后面简称AB)。资源、代码都可以打成

2022-05-09 14:44:56 1108

转载 【Unity游戏开发】AB学习(四)Addressables学习

引言AB系统学习完,发现unity出了Addressable Asset System资源管理系统,这势必是为了减少AB的繁琐,可视化AB,让客户端开发再简单一点点,减少大家的操作难度,让大家早日被人工智能替代。看了一下官方博客底下的评论,19年6月还有人反馈ios平台下会有加载不出来的问题,那这个方案按我们主程大大的意思就是不会被用到项目里,不过,这边当做学习一下新技术和未来趋势,学习一下新工具。简介首先Addressable Asset System顾名思义,是可定位资源管理系统。它提供了

2022-05-09 14:43:38 1037

转载 【Unity游戏开发】AB学习(三)加载和实例化的内存变化

前言了解一下加载AB和实例化操作对应的内存变化,有助于我们更好的理解内存管理这篇文章会详尽地举例说明,帮助理解加载一个AB后,内存对应的变化情况一、引入:经典的对称造型,用多少释放多少。以下是加载AB和实例化各阶段的内存和其他数据变化详细说明:初始状态 变化 加载 AssetBundle.Load文件后 内存多了文件镜像,Memory+4.4MB,Total Object和Assets+1【AssetBundle也是object】 载入Texture

2022-05-09 14:42:36 817

转载 【Unity游戏开发】AB学习(二)打包策略

AB分配策略:确定如何将项目的资产划分为AssetBundles并不容易。关键决策是如何将对象分组到AssetBundles中。以下是unity手册提供的主要策略是:1. 逻辑实体分组(Logical Entity Grouping)例子捆绑用户界面屏幕的所有纹理和布局数据 捆绑一个角色/一组角色的所有模型和动画 捆绑跨多个级别共享的场景片段的纹理和模型最常用的策略:按功能出现需要的资源,将需要的资源捆绑到一个ab里,这样,加载该功能界面的时候,只要加载该ab就可以,如果功能比较复杂

2022-05-09 14:41:13 1489

转载 【Unity游戏开发】AB学习(一)理论基础

AB原理1. AssetBundlesUnity开发,想要输出产品,热更资源,难免要了解AssetBundle(后面都用ab代替),ab是uniy对资源(例如:模型、预制、音效、甚至整个场景)的一种抽象,unity可以在运行时加载ab文件。你可以自己选择压缩方式(LZMA或LZ4),让ab更小,方便下载,游戏包体也会变小,加载起来也会变快。ab文件有点像zip文件,像一个大文件夹,把资源都塞进去,这些资源有2种类型:1. 序列化文件:资产分解成单独的对象并写到该单个文件中。2. 资源文件:

2022-05-09 14:38:59 429

转载 三角剖分——递归切耳算法(recursive cutting-ear)

使用条件只适用于简单多边形。简单多边形:每个顶点只被两条边分享,如下图所示。 术语带符号面积:顶点p1、p2和p3,通过叉乘(p1p2.X*p2p3.Y - p1p2.Y*p2p3.X)/2计算得到的面积(有正负号),即是带符号面积。顶点凹凸性:对于待测顶点i,计算i-1, i, i+1组成三角形的带符号面积Area,Area>0为逆时针,Area<0为顺时针,如果其时针特性和多边形的相同,就是凸点(convex vertex),否则为凹点(concave vert...

2022-05-07 19:08:51 685

转载 什么是雪花算法

雪花算法是Twitter公司发明的一种算法,主要目的是解决在分布式环境下,ID怎样生成的问题1,分布式ID生成规则硬性要求:全局唯一:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:MySQL中InnoDB引擎使用的是聚集索引。多数RDBMS使用Btree的数据结构来存储索引数据,在主键的选择上尽量选择有序的主键保证写入性能。单调递增:保证下一个ID号一定大于上一个。2,分布式ID生成可用性要求:高可用:发布一个获取分布式ID的请求,服务器就要保证99.999%的情况下

2022-05-07 19:07:22 386

转载 C#-StructLayoutAttribute(结构体布局)

先让我们看四个首要的根基概念:  1.数据类型自身的对齐值:  对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。  2.结构 体或者类的自身对齐值:其成员中自身对齐值最大的那个值。  3.指定对齐值:#pragma pack (value)时的指定对齐值value。  4.数据成员、结构 体和类的有效对齐值:自身对齐值和指定对齐值中小的那个值。有 了这些值,我们就可以很方便的来讨论具体数据结构的成员和其

2022-05-07 17:31:16 1802

转载 【Unity优化】Unity图集打包(2020新版本和旧版本)

对于Unity中UI使用的图片精灵,打包成图集,可以降低DrawCall,提高性能。Unity2019以前的版本一、开启图集功能默认图集是不开启的,需要在Editor>Project Settings设置中,将SpritePacker的Mode修改为Always Enabled(总是启用)或者Enabled For Builds(在构建时启用)。二、设置图片的图集名称在Texture Type为Sprite的图片设置中,填写Packing Tag字段。Unity会自动将Pac

2022-05-05 10:50:37 3652

原创 AssetBundle粗线学习

工作流以及学习要点目录1.AssetBundle构建2.AssetBundle加密3.AssetBundle部署上传服务器4.客户端资源比对验证下载5.AssetBundle解密6.AssetBundle加载7.AssetBundle资源的卸载8.怎样从AssetBundle中加载资源以及如何处理依赖关系...

2022-04-24 22:57:40 1407

原创 获取unity安卓包的证书

工具:Unity、AndroidStudio、1.创建keystore,亲测用androidstudio创建新的keystore别名规则问题,始终无法创建,换成unity的keystore直接创建新的2.然后在androidstudio使用terminal工具直接生成apk签名证书,命令行参考Android Studio 获取签名秘钥 - 简书......

2022-04-21 19:51:18 3679

转载 【C#-深度复制和浅度复制的比较】

有的时候我们可能在实际的项目中需要一个对象在某个状态下的副本,这个前提很重要,这点怎么理解呢,例如有的时候我们需要对比一个对象经 过处理后的状态和处理前的状态是否发生过改变,可能我们就需要在执行某段处理之前,克隆这个对象此时状态的副本,然后等执行后的状态进行相应的对比,这样的应用在项目中也是经常会出现的。例如:我们有一个对象 A a=new A(); 在进行实际操作完这个A对象之后,它的属性发送了一些变化;我们要与于在操作完它之前的状态进行比较,这个时候我们使用复制的方式保存原来的状态,避免了重新新建一个

2022-04-17 17:39:17 200

原创 Unity中的协程是什么?

最开始学习和进入Unity行业的时候,最开始的面试题就是问Unity中的协程是什么,协程和线程的比较。自己也查找过很多文章去学习,反正就是一直很懵。本着万丈高楼平地起,磨刀不误砍柴工,扎实基础的原则,好好学习基础知识。所以今天突然明白了,管他各种文章分析这么多,我就看Unity中的实现方式,说白了就是对C#迭代器的一种封装。关于里面的详细内容,后续补充,先记录下此刻。...

2022-03-31 22:07:12 2322

转载 c#静态构造函数 与 构造函数 你是否还记得?

静态构造函数和构造函数

2022-03-28 19:10:10 70

原创 C# 可访问和继承关键字总结(自己部分总结,还是觉得这两个放在一起好些)

关于C#访问修饰符,看别人的总结不是给个表,然后那些情况符合,看的让人困惑,或许他们的总结是因为他们对基础十分熟悉,能够做到从高处往下看。我的总结想想,倒是一种细分,从不同角度划分。下面就从不同角度试着看看,细致划分(其中会掺杂相关在我看来比较重要的补充),更利于学习理解。一、类成员可访问性修饰符:public 公共,整个项目可访问使用 private 私有,类内部(比如嵌套类 )或者累得实例可使用 protected 受保护的,派生类以及程序集 i...

2022-03-12 23:45:24 443

转载 A*寻路算法详解

https://www.gamedev.net/reference/articles/article2003.asp

2021-07-10 15:46:54 63

转载 uLua和toLua原理解析

https://www.cnblogs.com/yptianma/p/11797934.html在聊ulua、tolua之前,我们先来看看Unity热更新相关知识。什么是热更新举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好)。 热更新可以在不重新下载客户端的情况下,更新游戏的内容。 热更新一般应用在手机网游上。为什么要用lua做

2021-07-02 10:07:36 1064

转载 C#反射机制详解(转)

C#反射机制详解反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Reflection命名空间包含的几个类,允许你反射(解析)这些元数据的代码一、反射的作用:动态的创建类型的实例,将类型邦定到现有对象,或从现有对象中获取类型应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射反射主要应用於类库,这些类库需要知道一个类型的定义,以便提供更..

2021-06-02 17:54:18 249

原创 制作unity导出spine和模型预制体的工具

题外话,策划觉得多材质的spine导出后的名字不行,还要去修改一下spine资源导入时生成的文件名,在AsssetUtility中的IngestSpineAtlas静态方法中修改相关细节对于资源修改最后一定要调用AssetDataBase.SaveAssets()和AssetDataBase.Refresh(),这样才会弹出提示要保存修改,不然使用的人以为就做完了,他们是不知道还需要做什么操作的,因为他们可能是策划或者美术。关于fbx文件的材质设置,饶了个弯,importerMaterials设置为

2021-05-28 13:41:29 1294

原创 第24章 CAPI概述

暂时占位,还没想好写啥。

2021-05-08 21:56:38 84

原创 C# 访问修饰符总结

public protected internal private可使用访问修饰符指定一下留个可访问性级别:public:访问不受限制。 protected:访问受限于包含类或派生自包含类的类型。 internal:访问受限于当前程序集。 protected internal:访问受限于当前程序集或派生自包含类的类型。 private:访问受限于包含类。 private protected:访问受限于包含类或当前程序集中派生自包含类的类型。...

2021-03-31 20:40:58 122

原创 第9章 定义类

默认情况下,类声明为内部的,即只有当前项目中的代码才能访问。可以使用internal访问修饰符关键字显式指定,如下所示(但这不是必须的):internal class MyClas{ //Class members}

2021-03-31 18:18:36 147

转载 浮点数在计算机内存中是如何存储的?

对于一个整数,我们可以很方便的在十进制与二进制中转换,但是对于一个浮点数来说不是这么容易——因为小数点的存在。对于浮点数来说,小数点的位置不是固定的(小数点后面的数的个数不定),所以如何存储小数点是一个挑战。后来人们想出用科学计数法通常如这般:3.12*10^5来表示浮点数,这样的好处是:小数点的位置固定下来了。因为计算机只能用01表示,所以我们用2来表示上面提到的那个10.公式如下:X = a*2ea为浮点数的二进制表示,范围为...

2021-03-29 20:33:33 1121

原创 第14章 环境

Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境(environment)”。这种组织结构的有点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua内部的实现。其二,可以向其它table一样操作这个table。为了便于实现这种操作,Lua将环境table自身保存在一个全局变量_G中。--以下代码打印了当前环境中所有全局变量的名称for n in pairs(_G) do print(n) end具有动态名字的全局变量...

2021-03-26 20:31:43 38

原创 第十三章 元表与元方法

元表基础知识lua中的每个值都有一个元表。table和userdata都可以有各自独立的元表,而其它类型的值则共享其类型所属的单一元表。Lua在创建新的table时不会创建元表。任何table都可以作为任何值的元表,而一组相关的table也可以共享一个通用的元表,此元表描述了他们共同的行为。一个table甚至可以作为他自己的元表,用于描述其特有的行为。总之任何搭配形式都是合法的。local t = {}print(getmetatable(t)) -->nilloca.

2021-03-25 11:02:11 179

原创 游戏开发书籍推荐

Lua由于本人是游戏研发,目前热更需要用到lua,所以找大牛要了一份关于lua的学习书籍lua基础书籍:lua程序设计第二版(讲的是lua5.1)第四版(讲的是lua5.3)https://book.douban.com/subject/3076942/lua进阶书籍:lua设计与实现https://book.douban.com/subject/27108476/C#CLR via C#第四版...

2021-03-25 10:27:27 321

原创 2021年3月16日记录

就自己目前看的lua程序设计第二版,感觉有意思有趣印象深刻的地方1.尾部调用2.closure3.元表

2021-03-16 16:07:57 74

原创 第九章 协同程序(coroutine)

2021年3月15日17:40:39占位

2021-03-15 17:40:54 171

Unity-BehaviorDesigner-Demo.zip

Unity插件BehaviorDesigner,支持最新版Unity

2021-07-07

lua语言实现类的原理

lua类的实现

2021-01-14

空空如也

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

TA关注的人

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