- 博客(64)
- 资源 (5)
- 收藏
- 关注
原创 透明度混合
Shader "Unity/AlphaBlent"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Color("Color",Color) =(1,1,1,1) _AlphaScale("AlphaScale",Range(0,1))=1 _Cutoff("Cutoff",float)=0 } SubShader { Tag..
2023-06-23 01:36:17
248
原创 Unity Mac最新打苹果包流程
这里写自定义目录标题IOS详细打包流程2.申请开发证书IOS详细打包流程1.申请AppID2.创建证书3.申请配置文件(又名描述文件)4.使用Xcode进打包1.申请APPID打开官网https://developer.apple.com登陆开发者账号后进入这个界面,点击任意红框点击注册后就能看到了2.申请开发证书开发者证书分为两种:Development 和 Distribution。1、 Development:调试证书,开发人员使用,包含调试信息,生成证书时
2023-06-23 01:36:02
4538
1
原创 《铸梦之路三》高性能 自动化组件拖拽及代码生成工具 开发效率提升50%
让开发效率提升%50的高性能自动化工具 (主程必备)1.前言2.高性能、高效率、自动化工具介绍自定义组件属性名称规则介绍自动生成组件查找代码案例演示自动生成界面脚本声明周期案例演示新增\修改组件,二次生成演示(自动生成不会覆盖以编写代码)。1.前言相信有不少人在开发游戏时会经常忽略一个问题,就是我们的日常工作中经常会掺杂着大量的,重复的,无效化工作。而这去做这些无效化工作是毫无意义的,完全是在浪费我们的时间,我们完全可以把这些时间用在学习上,提升一下自己的技术,百害而无一利。或者…也可以用来干点别的。当
2023-06-23 01:32:37
886
2
原创 【Unity 2D AABB碰撞检测】铸梦之路
AABB代表的是轴对齐碰撞盒AABB碰撞盒是指与场景基础坐标轴(2D中的是x和y轴)对齐的长方形的碰撞外形。与坐标轴对齐意味着这个长方形没有经过旋转并且它的边线和场景中基础坐标轴平行(例如,左右边线和y轴平行)。这些碰撞盒总是和场景的坐标轴平行,这使得所有的计算都变得更简单。
2023-06-23 00:47:00
4020
原创 【手把手教你C#如何使用SqlSugar操作MySQL数据库】三 SqlSugar使用案例
当我们的数据库和数据表被创建出来后,我们就可以开始下一步了。接口用来初始化我们的实体类映射的数据表。数据库可视化软件后,可以看到我们的。类的变量名字就是数据表的字段名字。数据表就被创建出来了。
2023-02-01 08:27:32
13665
1
原创 【C# Unity 手把手教你服务器 SqlSugar+MySQL数据库使用一】 环境搭建
在使用数据库之前我们需要先搭建一下环境。这里有两点1.搭建C# SqlSugar 环境,该库的特性是类对象与数据表形成映射的关系,我们只需要操作对象即可,内含增、删、改、查各种接口,无需编写数据库命令。安全可靠,性能好。2.下载安装MySQL,用来查看数据库数据。可以对数据库数据直接进行操作。SqlSugar 是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM框架 ,51Job和Boss直招简历数超过 国外框架 Nhibernate PetaPoco,
2023-01-31 14:21:17
1518
原创 【Unity必备商业级前缀树红点系统】
该系统基于前缀树结构去实现,在需要更新红点时,我们只需要更新对应的红点状态,该红点状态发生改变会自动通知其父节点的红点更新以此类推,直至到树顶。我们把红点系统分为逻辑层和表现层,逻辑层主要负责红点逻辑的判断,由逻辑层去决定该不该显示红点,而表现层则只需要根据逻辑层的红点状态去及时的更新红点的显示/隐藏的状态即可。这样可以更清晰的去梳理我们的红点逻辑,而不至于与UI相关的代码混为一谈。完美剥离代码与UI的关联。
2022-10-25 22:33:21
2326
1
原创 《帧同步定点数》定点数原理和无损精度的实现方式
简单来说就是小数点固定的一种数据结构体,可以固定小数点位1位,也可以固定小数点为0为,总之是需要通过一系技术手段来控制小数点的位数,来防止由于小数精度问题带来的数据计算的误差产生的蝴蝶效应。但是在真正使用定点数的情况下,没有人愿意保留小数去做运算的哪怕是一位。基本都是保留0为小数,整个逻辑计算完全使用整形数据进行运算。这样才能将误差将为最小。...
2022-07-28 23:05:10
3593
1
原创 Unity 如何把UGUI做到极致的优化
在日常工作中,UI的性能往往是被忽略的一点,他其实看似影响不大,但当一个项目达到了性能瓶颈的时候,你反过来在去优化UI,你会发现你大部分的性能,内存,包体全都的原因都处于UI系统。一个没有提前考虑性能和优化的UI系统带来的问题会有很多,比如:Apk包体过大界面之间切换不流畅动画卡顿掉帧内存占用过大(会导致应用闪退)Draw Call过多导致GPU渲染压力大游戏掉帧顶点过多造成游戏卡顿这只是一部分在游戏中很常见的性能问题。那么究竟是什么原因造成了我们的UI性能下降。首先,要知道为什么会
2022-07-01 08:26:14
9882
5
原创 如何打造一个高性能、高效率、高自动化的UI框架
如何打造一个高性能、高效率、高自动化的UI框架?1.什么是好的UI框架?2.如何设计?3.为何设计?4.框架解决方案1.什么是好的UI框架?MVC? MVVM?这些代码框架是没有任何问题的,他是对的,但又不完全对。笔者认为一个UI框架具备的不仅仅是代码层的简洁与低耦合。更重要的一个也是很容易被忽略的问题,就是UI的性能、效率、自动化。这三者性能权重是最高的,其次是效率,最后是自动化。如果一个游戏的UI性能不好,给人直管的感受就是不流畅,顿挫感,掉帧感。这里有人可能就会有所疑虑,一个UI界面
2022-07-01 08:25:12
1800
1
原创 《铸梦之路》Untiy高性能自动化UI管理框架ZMUIFramework
Untiy高性能自动化UI管理框架ZMUIFramework简单介绍UI管理系统遮罩系统堆栈系统灵活的层级系统自动化系统高效率系统框架的基本介绍:如何打造一个高性能、高效率、高自动化的UI框架简单介绍则其优、舍其糟。该框架在每一处都考虑以最优的方式进行设计。以性能点、自动化点、效率点、和易使用点四个大点为基础 研发的一个高性能、高效率的Mono、物体分离式框架,该框架打破常规的Mono驱动,生命周期自动化管理,无需考虑与Mono周期混杂问题。全程界面物体上无任何一个脚本,但使用起来和Mono脚本无任
2022-07-01 07:54:44
5770
3
原创 《铸梦之路》帧同步卡牌放置手游(斗罗大陆武魂觉醒、上古王冠)
帧同步卡牌放置手游技术点:同步帧、定点数、逻辑渲染分离、技能系统、Buff系统、游戏战斗框架。
2022-06-30 08:41:48
2996
原创 Untiy 帧同步的探索之路一 位置帧同步
Untiy 帧同步的探索之路一 位置帧同步环境使用到的技术未使用技术帧同步核心锁帧帧同步UDP同步方式定点数数学库帧同步技术是早期RTS游戏常用的一种同步技术。与状态同步不同的是,帧同步只同步操作,其大部分游戏逻辑都在客户端上实现,服务器主要负责广播和验证操作,有着逻辑直观易实现、数据量少、可重播等优点。帧同步与状态同步相比各有各的优点。不管我们当前用不用的到某些技术,但说不定我们以后会用到,所以多一份技术傍身,一方面是为了壮大自身,能找到更好的工作。一方面是多一份技术,就多一份自信,多一份能力。本
2021-05-23 23:04:12
2806
18
原创 Unity 获取Andorid和IOS手机运营商IMSI
Unity 获取Andorid和IOS手机运营商IMSIAndorid获取运营商IOS获取运营商Unity 调用参考在项目开发中,获取运营商也是很常见的功能。但是Unity并没有提供获取运营商的接口,需要我们在Andorid和IOS底层进行编写。下面是获取运营商的接口,区分Andorid 和IOSAndorid获取运营商 public static String getNetWorkOperatorName(){ TelephonyManager tm = (Telephon
2021-05-21 11:24:11
624
8
原创 手把手教你如何在Unity中使用UnityGoogle.Protobuf3(三) 序列化与反序列化
手把手教你使用Google.Protobuf3三 序列化与反序列化1.Untiy工程创建2.导入Google.Protobuf.dll3.导入proto协议文件4.编写序列化与反序列化工具类5.编写协议正反序列化代码6.序列化与反序列化验证1.Untiy工程创建首先创建一个UnityDemo,Unity版本最好在2018以上。创建完成之后把项目.net框架切换为4.x如下:2.导入Google.Protobuf.dll1.创建Plugins/Google.Protobuf.3.17.0文件夹,
2021-05-17 08:06:21
2107
13
原创 手把手教你如何在Unity中使用Google.Protobuf3(一) Protobuf.dll获取获取
Unity 最详细的Protobuffer3的编译
2021-05-17 08:02:05
3620
3
原创 Unity 托管堆内存优化之内存溢出 Out of Memory 导致的崩溃
内存优化之内存溢出 Out of Memory 导致的崩溃为什么会导致内存溢出?Unity内存管理系统堆栈内存和堆内存什么是托管堆?申请内存的原理造成内存溢出的原因解决内存溢出的方案为什么会导致内存溢出?导致内存溢出的原因很简单,就是因为我们在大量的使用内存,而由于系统(OS)各种限制原因,我们可以申请使用的内存已达上限,没有多余的内存空间进行申请使用,但是我们仍在无节制的使用内存,最后就导致我们使用的内存已经超过了可使用的内存上限。从而就造成了 Out of Memory 内存溢出,甚至产生崩溃。这
2021-05-15 00:01:27
2935
13
原创 Unity Mac Jenkins自动化打包之Jenkins+Unity+xcode+fir+钉钉群通知
1.安装Jenkins这里推荐使用命令行安装,这样基本不会弹出权限问题,如果直接使用dmg包进行安装,在自动化的过程中会弹出很多权限弹窗。Mac Jenkins下载地址:https://www.jenkins.io/download/lts/macos/进入以后出现以下界面打开终端,复制命令 安装Jenkisn brew install jenkins-lts等待结束之后就安装成功了。启动Jenkins然后输入命令:brew services start jenkins-lts启
2021-05-13 07:46:25
1662
3
原创 Window超简单Cmake安装与配置
第一步下载安装包官网链接:https://cmake.org/download/下载教程如下图:第二步解压zip文件到指定的目录,博主这里解压到E盘了。在解压后的文件中找到bin->cmake.exe,博主这里的路径为:E:\Program Files (x86)\cmake-3.20.1-windows-x86_64\bin。这个路径也就是你把解压后的文件放到哪了。即为你的安装路径。第三步给cmake.exe添加环境变量,右键“我的电脑”,选择“属性”,进入高级系统设置,点击“环
2021-04-13 08:31:33
429
2
原创 Window NDK下载以及环境变量配置
前言NDK是开发者必不可少的一部分,所以这里记录下NDK的下载安装以及环境变量配置这里我是通过Android进行下载的步骤一 NDK下载安装1.安装NDK 路径载File-Setting中2.这里下载完成之后有可能会出现 NDK Not Platform 情况,如果出现这种情况,在装一个NDK包即可3.安装完成之后打开 File-Onther Settings-Default Project Structrue…检查下配置,如果入如下图一样,出现了NDK的版本号,那就说明安装好了,下面一起来
2021-04-13 07:33:41
5655
1
原创 Unity Editor编译器内置资源大全
下面是整理的UnityEditor编译器能够使用的GUIStyle以及图标按钮资源。内置按钮内置图标使用方法源码:其中包含了内置图标资源代码和内置Style样式代码 using UnityEngine;using UnityEditor;using System;/// <summary>/// 内置图标资源/// </summary>class MyWindow : EditorWindow{ static string[] text;
2021-04-10 11:24:06
469
1
原创 Unity 革命性技术DOST入门五 Physics触发器
前言上一篇说到在DOTS中使用射线检测功能:Unity 革命性技术DOST入门四 Raycast射线检测说到物理世界那么肯定少不掉我们最为常用的碰撞检测,这算是我们开发中很常用的一个功能了,所以他的性能也是非常重要的,所以Unity为DOTS专门准备了一个新的物理世界,哦不,应该算是两个把,其实都一样,一个叫Unity.Physics 另一个则叫Havok Physics,那么咱们这里就先用第一种,第二种咱们后面再说Unity.Physics使用介绍首先是Physics中最重要且最常用的两个Aut
2021-01-26 20:51:03
4963
1
原创 Unity 革命性技术DOST入门四 Raycast射线检测
DOTS Raycast射线检测1.在使用Raycast之前我们首先要做的是导入引用Havok Physics物理引擎Unity Physics集成Unity Physics方式:在使用的前提下我们需要给物体加上Physics Shape组件Physics Shape就等价于BoxCollider碰撞体,不加碰撞体我们是接收不了射线检测的。Physics Body 则等价于RigidBody重力组件下面是两种射线检测方式,一种是主线程正常射线检测另一种则是使用到了ECS,通过Job
2021-01-26 20:49:30
4571
3
原创 Unity 革命性技术DOST入门三 JobSystem系统
这篇文章会让你真正的认识到JobSystem的强大之处,并且还会感受到DOTS的恐怖之处!那么下面通过实践测试来见证一下。首先我们通过一个高频率且复杂的计算来验证在一帧内正常计算和使用JobSystem进行计算所需的耗时。下面是我们计算的方法计算公式是在每帧执行10个 10万次的 次方计算和开平方计算这里的用到的是DOTS配套的Mathematics数学库测试源码我会放到文章末尾下面是数学计算代码: void Update() { //记录一下开始的时间
2021-01-26 20:47:55
11018
3
原创 Unity 革命性技术DOST入门二 ECS简单使用介绍
上一篇:Unity 革命性技术DOST入门一 使用介绍ECS介绍ECS 由实体(Entities)、组件(Components)、和系统(Systems,)组成,其中Entity,Component皆为纯数据向的类,System负责操控他们,该架构专注于数据,使用这种模式会一定程度上优化我们的代码速度。Entities:游戏中的事物可以对标为物体Components:与Entity相关的数据,但是应该有数据本身而不是实体来组织。(这种组织上的差异正是面向对象和面向数据的设计之间的关键差异之一)
2021-01-26 19:53:24
8762
2
原创 Unity 革命性技术DOST入门一使用介绍
Unity DOTS入门介绍1.什么是DOTS?DOTS是Data-Oriented-Tech-Stack,官方中文翻译是:多线程式数据导向型技术堆栈。DOST由以下三大核心成员组成:Entity Component SystemJob SystemBurst compilerEntity Component System 简称为ECS(实体组件系统),是一个代码框架,遵循该框架即可写出高性能的代码Job System 提供了以并行的方式在多核CPU上运行游戏代码的方法,可以理解为多
2021-01-26 19:51:42
9046
3
原创 Unity Shader 边缘光
边缘光原理:在物体的边缘着色一层颜色光。根据点积来判断模型的边缘,通过视角方向点积法线方向得到的值,来判断该片元是否处于边缘,视角点积法线得到的值在0-1之间,当结果等于0时说明该片元处于模型的边缘这个时候,视角方向与法线相互垂直,与切线共线,可以理解为,当视角方向与法线垂直,或与切线共线时,则说明该片元为边缘。反之,结果越靠近1片元则越处于中心。因此我们可以我们可以根据点积的值来计算边缘光。计算公式:float3 rim=dot(worldNormal,ViewDir);float3 rimCo
2020-09-10 16:22:37
999
原创 Unity Shader 反射 折射 菲涅尔反射
反射核心算法:Reflect(-viewDir,worldNormalDir)折射核心算法:Refact(-viewDir,worldNormalDir)菲涅尔反射算法:Fresnel =FresnelInstenisty+(1-fresnelIntensity)*dot(-viewDir,worldNormalDir)
2020-09-10 15:34:09
2402
1
原创 UnityShader 之帧动画
fixed time=floor(time. xspeed)fixed row=time/RowCountfixed culomn=time-rowRowCount
2020-09-10 11:28:14
513
原创 Unity Shader GrabPass 抓屏幕 截屏
Shader 抓屏 截屏抓屏命令:GradPass{“Name”}释义: 定义抓屏通道 GradPass{"_GrabPassTexture"}声明抓屏通道名称:_GrabPassTexture 表示抓屏通道的名称,如果声明了抓屏通道的名称,只需在shader属性声明区声明一下,Unity会自动把抓屏的图形填充到我们声明的_GrabPassTexture中,我们可直接通过_GrabPassTexture直接使用该贴图。不声明抓屏通道名称:如果不填写抓屏的名称,那么Unity就会默认使用_
2020-09-10 11:18:35
1421
1
原创 Unity Shader 玻璃材质
玻璃材质要知道玻璃的实现原理那么首先要知道玻璃的原理。在现实世界的情况下:1.在正常透明不模糊的玻璃下,透过玻璃看外界,基本上和不用玻璃没有太大差别。基本上就是透视。2.在模糊的玻璃下,透过玻璃看外界,可以看到因为玻璃模糊导致透过玻璃看到的外界画面有点扭曲不清楚的感觉。这是一种模糊的扰动现象。3.在漆黑的玻璃下,或者晚上,我们透过正常不模糊的玻璃看想外界时会发现看不到任何东西,反而看到的是自己在镜子里的样子。这是一种反射现象。由上可以不同时间的玻璃影响可得到玻璃的三个效果,正常透视、模糊扰动、以
2020-09-10 11:05:22
4323
原创 Unity Shader之AlphaTest透明度测试及正确的阴影
透明度测试核心原理:对于Alpha透明通道小于阈值的片元直接舍弃掉,被舍弃掉的这些片元不会对颜色缓冲产生影响,也不会在进行任何处理下面是两种舍弃阀值外的片元方式: //裁掉Alpha小于0的片元 clip(texColor.a-_Cutoff); //裁掉Alpha小于0的片元 if(texColor.a-_Cutoff<0) { discard;
2020-09-10 10:56:19
2398
原创 Unity shader Xray 效果
实现原理:通过Ztest(深度测试)判断该物体是否被遮挡,如果被遮挡则为物体画上一层边缘光,加上AlphaBend,实现Xray效果,否则不进行任何处理。判断是否被遮挡:在深度测试中,往往越靠近相机的位置越靠前,越远的地方越靠后,深度值一般用Z表示,范围在0—1之间,深度值越小越靠前,深度值越大越靠后。而Ztest的状态有下面几中,由此的知,当我们当前片元处于大于的状态说明该物体前面有其他的物体被渲染且已经进行深度写入。所以在这种状态下,我们就可以绘制我们的Xray效果了。关闭深度写入:ZWr
2020-09-10 10:51:44
1105
原创 Unity 一分钟学会适配IOS刘海屏
IOS刘海屏适配项目上线了总免不了适配问题,Unity UGUI的锚点针对于Andorid平台的适配还是很不错的,只需调整Match为1 即可让渲染的画面处于屏幕的安全位置之内,但到了苹果平台上往往会出现 侧边栏按钮被刘海遮住的问题,因此 要解决这一问题,网上有很多方式,这里博主就不一一描述了,感兴趣的可以自行百度。但是博主这里提供一种只使用C# + UGUI就可实现的,简单,高效,快速的 针对于IOS的适配方案,该方案已通过测试,并在线上运行良好。注:该方案支持热更适配,哪怕是上线项目也可以及时开
2020-07-30 18:26:27
2303
NGUIInfiniteScroll.unitypackage
2019-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人