自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (10)
  • 收藏
  • 关注

原创 Unity lua事件注册和响应

lua中经常要用到事件的处理,用于解耦合lua事件的实现常用方法:--错误日志--该日志为必须处理的日志,release也会打印堆栈信息(lua和c#)function Fatal(str) Debugger.LogError("Fatal:"..str..'\n'..debug.traceback())end--检查一下,如果不是字符串类型的需要处理一下function _check_str(str,where ) if type(str) == "string" then

2021-09-14 12:00:46 326

原创 Unity lua红点系统

红点基本上是游戏中必备的吧,红点遍地有,所以需要一套统一的红点系统来管理。红点注册new_tip_register = {}local this = new_tip_registerlocal LASTNUMBER = 99999--红点枚举(第一步:注册红点枚举)Enum_New = { NEW_ALL = 999999, --遍历所有用 ------------------------------------红点-----------------------------

2021-09-12 17:49:23 598 2

原创 批处理bat踩坑记

之前由于公司的打包脚本都是在mac系统上执行的,所以都是用shell写的命令,但是有次需要在windows上打包,此刻的我只好把shell改成bat了,踩了很多小坑,淦。记录打包时间if %time:~0,2% LEQ 9 (set startTime=%Date:0,4%%Date:5,2%%Date:8,2%0%Time:1,1%%Time:~3,2%) else (set startTime=%Date:0,4%%Date:5,2%%Date:8,2%%Time:0,2%%Time:~3,2

2021-09-02 16:24:56 117

原创 Unity SVN工具

可在Unity上直接进行提交、更新、查看log、clear up等操作。代码如下:/******************************************************************** 文件:UnityToSVN.cs 功能:整合SVN命令到Unity编辑器*********************************************************************/using UnityEditor;using UnityEn

2021-06-08 14:31:59 377 1

原创 Python实现Jenkins打包成功后,在企业微信群里通知别人

平时我们打包都是在打包机上通过Jenkins来自动打包,但我们不知道打包机什么时候能打完包,总不能经常看打包机有没有打完包吧,所有就写了一个脚本来通知企业微信的人告知打包完成了。安装首先要安装python2.7 或者python3.x都可以,建议安装python3.6.把路径添加到系统环境变量里然后再通过cmd命令执行pip install requests等待安装完就可以了Python代码块# -*- coding: utf-8 -*-import requestsimport sys

2021-04-02 16:37:09 282

原创 AssetBundleManifest文件的内容转txt文件输出

打完补丁包后,补丁包中会有一个Android.ab或者iphone.ab文件,里面记录了所有ab资源的依赖关系,但是这种格式的文件直接打开是看不了的,无论怎么转码都看不了,所以就写了一个编辑器工具用来查看里面的资源依赖关系。(其实打完包后,会附带输出一个manifest文件的,也记录有ab的依赖关系,但是我就是无聊想读Android.ab中的内容,所以简单写了下代码,大佬勿喷)代码如下:/*********************************************************

2021-03-24 16:21:00 206

原创 Python 实现自动检查代码中的log打印并根据关键字注释掉

首先安装读写excel表格所需的插件:xlwt(写入) xlrd(读取)插件链接:https://pan.baidu.com/s/1vCPX70awNQK-aqiEtl9JrQ提取码:exce安装教程:https://jingyan.baidu.com/article/acf728fd6f52bdf8e410a37e.html代码部分创建一个python脚本#! /usr/bin/env python# coding=utf-8import osimport sysi

2021-03-09 19:53:52 229

原创 Unity Dots学习

我用的Unity版本是Unity 2019.4.19f1c1 (64-bit)Unity中的PacketManager中下载Entities,再下载Hybrid Rer用于显示。Dots入门1.打印一个数字先创建一个Componentusing System.Collections;using System.Collections.Generic;using Unity.Entities;using UnityEngine;public struct PrintComponentData

2021-02-13 23:34:14 464 1

原创 Unity 使用贝塞尔曲线快速生成坐标点,并保存为asset文件

圈住的为生成的坐标点,改变控制点的位置后,坐标点也会跟着变。点击1后,生成2号文件,即为unity可以使用的asset文件。代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Linq;using UnityEditor;public class BezierPointSpawn : MonoBehaviour{ [Range(1, 3000.

2020-12-05 23:50:48 569

原创 Lua复习

#是一元运算符,返回字符串或表的长度。 #“Hello” 返回 5~=不等于select(’#’, …) 返回可变参数的长度 select(n, …) 用于返回 n 到 select(’#’,…) 的参数repeat…until 重复执行循环,直到 指定的条件为真时退出循环,即false时一直循环%a: 与任何字母配对%d: 与任何数字配对lua 中没有 continue 语句,可以使用类似下面这种方法实现 continue 语句for i=10,1,-1 dorepea

2020-08-08 17:43:34 87

原创 Unity在手机上打印错误信息

新建一个Text,拖拽赋值(注意Text要足够大,能显示较多内容),代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class ErrorDisplay : MonoBehaviour{ internal void OnEnable() { //Application.RegisterLogCa

2020-07-07 10:39:08 474 1

原创 Unity 二维码的生成与扫描

效果:点击这里下载zxing.unity.dll将这个dll放到unity中,创建一个raw Image和Button,拖拽赋值,代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using ZXing;using UnityEngine.UI;public class Draw : MonoBehaviour{ [Header("绘制好的二维码显示界面")]

2020-07-06 23:35:29 2563 1

原创 Unity 贝塞尔曲线

贝塞尔曲线是最基本的曲线,一般用在计算机 图形学和 图像处理。贝塞尔曲线可以用来创建平滑的曲线的道路、 弯曲的路径就像 祖玛游戏、 弯曲型的河流等。贝塞尔曲线工具类:using System.Collections;using System.Collections.Generic;using UnityEngine;public class BezierUtils{ /// <summary> /// 根据T值,计算贝塞尔曲线上面相对应的点 /// &lt

2020-06-29 23:56:25 277

原创 Unity 制作蛇形移动的效果

效果:新建脚本,代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Test : MonoBehaviour{ public List<Transform> brick; Coroutine[] temp; public float range = 10;//摆动范围 private void Start()

2020-06-09 23:51:53 620

原创 Shader 锥形扫描遮挡效果

效果图如下:新建shader,代码如下:Shader "Unlit/ConeScan"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Color("Color",Color)=(1,1,1,1)//颜色 _StrongFloat("_StrongFloat",float)=0.1//增强圆形边缘效果的值 _AlphaDownFloat("_AlphaDownFloat",float)=0.2//降

2020-06-09 23:29:47 670

原创 Unity A*寻路算法

Unity中自带有NavMeshAgent寻路组件,很好用很方便,功能也挺多的,不过性能可能比不上A寻路算法,但是A算法也有一个缺点,就是寻的路线不一定是最短的,但却是较短的,可以满足寻路的需求。简易地图如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块...

2020-04-16 01:00:10 1801 2

原创 Unity FSM(有限状态机)

先看下效果:FSM ,有限状态机,一个可以枚举出有限个状态,并且这些状态在特定条件下是能够来回切换的。在游戏中经常看到的一些AI,如敌人巡逻,巡逻过程中看到玩家就追击,追上了就攻击,追不上并且有了一定的距离就返回去继续巡逻。Unity中的Animator就是一个FSM了,不过Animator是控制角色动画播放的,什么状态的时候播放什么动画。而这里写的FSM是控制角色AI的,什么状态就做什么...

2020-04-14 01:12:47 6433 3

原创 UnityShader 简单护盾效果

Shader "Unlit/Shield"{ Properties { _Color("Color", Color) = (1,1,1,1)//圈内的颜色 _RimColor("Rim Color", Color) = (1,1,1,1)//边缘颜色 _RimScale("Rim Scale", Float) = 1//边缘大小 _Transparent("Transpar...

2020-04-03 17:52:57 584

原创 Unity 利用编辑器扩展批量修改物体材质的Shader并启用GPU Instancing

为什么会有这个需求我的某个游戏运行之后,看了下draw call,发现上千个draw call了,非常大的数值,不过我在手机上测试了一下,竟然没有明显的卡顿,哈哈哈,很强,不过还是要优化一下的,所以先想办法降低draw call了,我看了一个,是游戏的地图产生了大量的dc,我这个游戏是由四个地图组成的,每个地图都由几百个小物体组成,所以四个地图应该是由两千多个物体组成的,刚开始我想着要不合并模型...

2020-04-02 22:13:37 1349 1

原创 Unity 性能优化

Unity之所以可以跨平台是应为unity里面有内置的mono虚拟机,我们所写的程序是运行在mono虚拟机上面,因为mono虚拟机可以跨平台所以我们开发的程序也是可以跨平台的。Draw Call简单来说Draw Call就是CPU对图形接口的调用,cpu通过调用图形库(DX,OpenGL)接口,命令GPU渲染,一次调用就是一次Draw Call。每调用一次Draw Call ,cpu就会做一次...

2020-04-01 23:12:07 197

原创 Unity Image镜像案例

效果:BaseMeshEffect介绍:要做镜像,就要修改Image的网格,所以要继承BaseMeshEffect,实现修改网格的抽象方法。BaseMeshEffect是UGUI源码中的东西,如下:graphic是当前的图形,可以转成Image,表示当前脚本上的Image。ModifyMesh(VertexHelper vh)就是我们要实现的抽象方法了,用来执行修改网格的操作。具...

2020-04-01 17:56:24 1480 2

原创 Unity 用TexturePacker实现自动打图集

需要先去下载texturepackertexturepacker官网:https://www.codeandweb.com/texturepackertexturepacker是一个打图集的软件,不只是适用于Unity,其他的也能用,用texturepacker来打图集比用Unity自带的打图集工具更好用。在Unity中新建一个Editor文件夹,再新建一个AutoTPBuild.cs,通过...

2020-03-31 00:52:27 1085

原创 Unity 动态打图集并完成小Demo的实现

为什么要动态打图集比如在英雄联盟中的选择英雄界面,有很多的图标供我们选择,而我们进入游戏之后只需要选择的那两三个图标而已,这是如果我们将所有图标都打成图集,就造成内存浪费,因为我们只需要两三个而已,那么我们有什么办法让我们只将要用到的图标进行打图集,其他的不打进图集吗?有的,那就是动态打图集。效果如下点击下面三个框中的一个,再点击上面十个图标中的一个,就完成了选择图标,一个个选。如何进行...

2020-03-31 00:15:32 1622

原创 Unity与Android的交互

Android调用Unity的方法在Android Studio中,File–》New–》New Module–》Android Library,创建一个新模块,取名为simplelibrary,然后打开unity安装目录D:\unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\clas...

2020-03-21 18:34:51 179 1

原创 unity 接入讯飞语音听写的SDK

获取讯飞语音听写的APPID讯飞开放平台的网址:https://www.xfyun.cn/进入讯飞开放平台注册登录后,创建应用,取得所需的APPID然后找到对应的语音听写的SDK进行下载,我下载后的文件夹名称是Android_iat1140_5e70aa24测试下讯飞自带的SDK效果我们先AndroidStudio创建一个新Empty Activity的工程。然后导入前面下载的SDK里面...

2020-03-20 21:14:52 1094

原创 unity 游戏上架Google Play

准备工作1.需要科学上网2.需要申请谷歌邮箱账户(注册出现“此电话号码无法用于进行验证”,这种情况需要用国外的手机号验证。去淘宝搜gmail号关键词找店家解决,一般5元左右)3.需要申请Google开发者4.需要有一张信用卡(Visa master卡),并且支付25美元(或者去淘宝找代付,淘宝搜索Google开发者就可以了)注册开发者developers.google.com 点击...

2020-03-06 00:03:51 1930

原创 c# 双向链表

我这里有两句代码用到了类对象池,有兴趣的可以去看看封装了一些双向链表的常用方法。都是不难的,只要思路清晰了就o98k了。using System.Collections;using System.Collections.Generic;using UnityEngine;public class ResourceManager : Singleton<ResourceManag...

2020-02-28 23:57:34 158

原创 c# 类对象池

类对象池存储的是类,当需要几十几百甚至更多的类进行频繁的使用和销毁时,就该使用类对象池了。基本类对象池:using System.Collections;using System.Collections.Generic;using UnityEngine;public class ClassObjectPool<T> where T:class,new(){ pr...

2020-02-28 15:30:56 1886

原创 C# xml序列化 二进制序列化 unity中的asset序列化

序列化是将对象保存为xml或json或二进制文件;反序列化则是读取文件信息,还原为对象;先建一个存储数据的类,添加标签表示可序列化using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Xml.Serialization;[System.Serializable...

2020-02-26 22:10:49 209

原创 shader 屏幕后处理之死亡置灰

先看效果:天空盒和角色都慢慢灰度化了,人物死亡的时候将屏幕置灰,很实用。首先创建一个置灰的shader,如下:Shader "MyShader/die"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Speed("Speed",float)=0 } SubShader ...

2020-02-22 17:27:58 437

原创 unity 利用UnityEditor.AssetModificationProcessor自动添加头部注释

在Unity中创建新的C#脚本时,会自动去加载某个路径下的模版,它的后缀为txt,创建的C#脚本初始自带的内容就是这个模版内的内容。在Windows下,这个路径为:Unity安装目录\Editor\Data\Resources\ScriptTemplates\81-C# Script-NewBehaviourScript.cs.txt在Mac下,这个路径为Unity.app/Contents/...

2020-02-20 17:06:58 1123

原创 shader 湿地面效果

效果图如下:代码如下:Shader "Custom/017"{ Properties { _Color("Color", Color) = (1,1,1,1) _MainTex("Albedo (RGB)", 2D) = "white" {} _Normal("NormalMap",2D) = "bump"{} _NormalScale("NormalScale",Ra...

2020-02-12 23:25:33 1633

原创 shader 水效果(SurfaceShader)

效果图:代码如下:Shader "Custom/Water"{ Properties { _Color("Color", Color) = (1,1,1,1) _WaterShallowColr("WaterShallowColr", Color) = (1,1,1,1) _WaterDeepColr("WaterDeepColr", Color) = (1,1,1,1)...

2020-02-12 16:06:21 1191

原创 shader 广告牌

游戏中,有时我们需要让某些物体一直的面向我们,比如天上的云和星星之类的,或者广告牌,如果用模型的话,比较耗性能,所以我们采用quad面片来节省性能,然后quad面片要一直看向摄像机。效果如下:无论我们怎么移动摄像机,quad面片都是面对我们的。代码如下:Shader "MyShader/015"{ Properties { _MainTex ("Text...

2020-02-11 23:25:00 594

原创 shader 顶点动画

效果图如下:实现了简单的上下浮动,可模拟简单的水面效果。代码如下:Shader "MyShader/014"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Swing("Swing",float) = 1//振幅 _Frequency("Frequency",float)=1//频率 ...

2020-02-11 18:26:24 774

原创 shader 滚动动画

效果图:只是实现了简单的向右偏移。代码如下:Shader "MyShader/013"{ Properties { _MainTex ("Texture", 2D) = "white" {} _ScrollSpeed("ScrollSpeed",Range(0,5))=1 } SubShader { Tags {...

2020-02-11 17:59:28 138

原创 shader 序列帧动画

原图:进行序列帧动画后的效果:图片找的不太好,但基本效果已经实现了。这便是序列帧动画。代码如下:Shader "MyShader/012"{ Properties { _MainTex ("Texture", 2D) = "white" {} _RowAmount("RowAmount",float)=4 _ColumnAmount("Colu...

2020-02-11 17:41:42 241

原创 shader 玻璃效果

玻璃效果主要是折射效果的计算和反射效果的计算。折射:1.利用Grass Pass对当前屏幕的渲染图像进行采样2.得到法线贴图对折射的影响3.对采集的屏幕图像进行关于法线方向上的扭曲和偏移,以模拟折射效果反射:主要利用环境贴图产生反射的残影,并和主贴图采样结果混合得到反射和折射的结果后,以一个变量控制最终效果(类似于玻璃的透光率);效果如下:代码如下:Shader "MySha...

2020-02-10 22:57:43 529

原创 shader 镜面效果

在unity中新建一个plane面片作为镜子,再新建一个摄像机,在Project下建好Material和Render Texture,新建的摄像机的Target Texture那里选择你刚刚新建的Render Texture,表示将新建的摄像机拍摄到的东西显示到Render Texture中(记住新建的摄像机要摆到合适的拍摄位置),新建一个顶点片元shader,Material中选择这个shade...

2020-02-09 23:32:28 1563

原创 shader 菲涅尔反射

用来描述光在不同折射率的介质之间的行为。用公式推导出的光的反射称之为“菲涅尔反射”。一般运用于水面效果,试想一下你站在湖边,低头看向水里,你会发现近的地方非常清澈见底(反射较少),而看远的地方却倒映着天空(反射较多),这就是菲尼尔效应。由于真实的菲尼尔公式计算量较多。在游戏里往往会用简化版的公式来提升效率达到近似的效果。Schlick菲涅尔近似等式:Empricial菲涅尔近似等式:...

2020-02-09 23:02:16 1794

Unity贝塞尔曲线工具

通过控制控制的坐标点来快速生成贝塞尔坐标,并将生成的坐标保存为map.asset文件供Unity读取坐标。

2020-12-05

unity AssetBundle打包管理工具.rar

这是一个AssetBundle打包管理的工具,通过编辑器扩展写的打包工具,通过填写prefab文件夹和其他需要打包的shader或音频等文件夹路径后即可一键打包,自动剔除冗余的ab包,自动生成AssetBundle的xml和二进制的配置表,通过读取配置表来加载prefab。

2020-02-26

unity千人战斗场景优化.unitypackage

三千人的场景,并且人物都有动画,启用了GPU Instancing,关闭了阴影,最重要的一步优化是将animation动画转成了纹理贴图,然后加载贴图就可以实现动画了,避免了直接播放动画片段带来的性能消耗。

2020-02-22

unity利用mesh绘制任意形状的平面.unitypackage

里面有几十个cube(也可以换成空物体),你也可以添加或者减少cube数量,通过控制cube的位置来生成不同的网格形状,从而产生不同的平面。代码中涉及到一些数学知识和编程算法,都是很实用的知识。

2020-02-16

Unity3D挖洞效果的实现.rar

实现了在模型中进行挖洞,可以控制洞的大小,洞的偏移位置,也可以控制模型的大小。当模型上面放有其他游戏物体时,我们可以控制洞的大小、偏移来使模型上的游戏物体从洞中掉下去,很实用。

2020-02-16

shader水效果.rar

这是shader的水面效果的代码,里面还附带了贴图,非常棒。用到了深度贴图采样,法线移动,光照模型,透明调整,波浪效果,抓屏扰动,菲涅尔反射等知识点。

2020-02-16

任意切割模型.rar

这是unity的一个切割模型的demo,通过代码控制模型的顶点位置的变化来使模型有种被切割的感觉,类似于现实世界中拿着锯子锯木头一样,可以控制切割的速度,位置,范围,还有是否启用切割的一个按钮,效果很不错!

2020-02-15

shader 岩浆流动效果.zip

在unity中运行后,可看到岩浆流动的效果,里面有代码和图片资源。这是shader的代码,可供广大shader爱好者学习使用。

2020-02-05

unity类似刮奖效果的实现.zip

自己选择一张图片,拖到unity中的,在图片上,鼠标点击哪里,或者滑动到哪里,鼠标附近的图片中的一小块区域都消失了,实现了类似于刮奖的效果。

2019-12-15

游戏解包工具(附教程).zip

里面有两个解包工具,还有一个音频解密文件,还有一个我写的拆包解包教程,用于拆解游戏中的资源文件,包含贴图、Font、mesh、sprite、shader等文件,可以将游戏中的那些文件获取出来,非常好用。

2019-12-11

空空如也

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

TA关注的人

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