自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 六边形网格+寻路

六边形 寻路

2022-09-22 15:41:13 1856 1

原创 AStar 拐点 算法实现AI寻路

一般来说,在项目中实现完整的寻路解决方案,是使用寻路算法(A只是其中一种)和拐点算法共同实现的。A这个算法相对知名,网上有大量的博文介绍,本文着重介绍拐点算法。演示具体项目可以在我的GitHub仓库中查看:传送门AStarAStar被称为启发式寻路算法,终点在于其启发函数的设置,在网上文章可以看到FGH值,其中F就是最终的启发函数的值。可以根据自己的需求进行相对应的GH值计算,也可以进行加权重。例如:地图中有沼泽地,那么相应的沼泽地通过时候,它的启发函数计算权重就要加大。大部分都是用方格进行

2021-09-26 17:03:52 1924

原创 Unity空间划分 CellSpacePartition(单元空间划分)

一个空间中个体数量大的时候就需要做一些结构进行分区以减少计算量。空间划分有很多种,本片介绍一个简单的划分方式:单元空间划分。简单来说就是将一个空间划分成很多格子,格子中有存着个体的集合。个体运动过程中,更新所有格子的集合。下面图片演示运动过程中格子的变化,绿色格子标识其个体集合中有>0数量的个体。核心代码如下:SpacePartition.csusing System.Collections;using System.Collections.Generic;using UnityEng

2021-09-22 18:31:05 882

原创 Unity模拟群聚行为 Boids 鸟群、鱼群

直接上才艺:在鱼群、鸟群等群体移动过程中,会发生群聚行为。群聚行为主要有3个约束条件:Spearation(分离)Alignment(一致性)Cohesion(聚集)1. Spearation一个个体在移动过程中,尽量避免与周围个体发生碰撞,保持一定距离。-- 分离function Bird:separation() local radius = 2 local force = Vector3.zero local found = 0 local

2020-12-03 17:04:18 5179 2

原创 unity shader 溶解效果

最近《元神》上线了,里面有个拾取宝箱后,宝箱溶解消失效果,试着做一下,整体还是很简单的。直接上效果达到这个效果需要一个噪声图用来做伪随机,然后通过一个阈值和噪声图任意一通道值比较进行clip,产从而实现控制现实与隐藏。图中蓝色部分是在将阈值进行偏移,偏移的部分显示一个新的颜色实现。下面是代码:Shader "box_disapper"{ Properties { _MainTex ("Texture", 2D) = "white" {} _NoiseTex ("Texture", 2

2020-10-13 15:14:14 555

原创 Unity Editor中打开场景获取GameObject

编辑器工具开发中,有时需要找到场景中的物体。下面介绍用代码在Editor中寻找指定场景中的GameObject如上图,在三个场景中分别有一些GameObject,现在随机打卡一个场景,然后再当前场景中找其他场景中的GameObject代码如下:using UnityEngine;using UnityEditor;using System.IO;using UnityEditor.SceneManagement;using UnityEngine.SceneManagement;publ

2020-07-27 18:46:44 2909

原创 Unity shader 角色消失 溶解 隐身 效果

先上两张效果图实现原理一句话总结:空间中有一个隐形的面,判断模型上和面的相对位置,根据需求隐藏上方或者下方的点。原理就这么简单,具体怎么实现呢,首先确定数学几何中平面的性质:原点到到面上任意一点构成的向量a,再这个面的法线(n)方向投影,都是相等的,距离为d。用数学公式表达为:ax + by + cz = d画一个小图更容易理解:最简单地平面垂直于Y轴。P1和P2在法线方向的投影是红色的虚线,长度相同,为d。P3是面下方的点,在法线方向的投影小于d,由此可以通过空间中任意一点的以原点为起

2020-06-22 12:47:46 1922

原创 unity 空气扰动,热空气 shader效果

正常效果:高速低扰动效果:低速高扰动效果:代码:Shader "Learning/rekongqi"{ Properties { _NoiseTex ("NoiseTextrue", 2D) = "white" {} _Strength ("Strength", range(0, 1)) = 0.5 _Speed ("Speed", range(-2, 2)) = 0.5 } SubShader { Tags { "Queue"="AlphaTest"} Ble

2020-06-15 11:02:52 2745

原创 unity 百叶窗效果 shader 两行代码搞定

两行shader代码搞定百叶窗效果!!!先看下效果:直接上shader代码:Shader "Learning/baiyechuang"{ Properties { _TopTex ("TopTexture", 2D) = "white" {} _BottomTex ("BottomTexture", 2D) = "white" {} _ColumnCount("ColumnCount", int) = 3 _RowCount("RowCount", int) = 3 _Sh

2020-06-04 16:54:07 1267

原创 随机取n个不相同的元素(Lua实现)

一些逻辑逻辑需求要在一个长度为m数组中取出n个不同的元素(m > n),一般第一想法是随机出一个下标,然后删除对应的元素,以此来取出不同的元素。本篇文章介绍一个不需要删除操作的方法。代码如下:-- 假设长度m为10,随机取出个数为n=3local table = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}local count = 3local length = #tablefor i = 1, count do local ri = math.random(i,

2020-05-29 11:50:23 2543

原创 Unity Excel导表工具,导成Lua,支持嵌套结构

为什么要使用导表工具?几乎所有游戏公司数据由策划来配置,程序负责逻辑,策划看不懂代码,excel是可以相对具象的让策划了解一个模块的数据配置,起到了策划和程序之间的桥梁作用,也可以方便策划对数据的把控。根据各个公司各个项目的不同,导表工具的输出形式不同,输出形式有:json,sqlite,txt,lua等,根据不同的项目需求,可以选不同的导表工具。本文章主要是介绍Excel导出Lua文件。此工具的功能支持导出Lua文件,自动换行对齐支持自定义字段不导入Lua支持无限嵌套的树状结构(table套

2020-05-29 11:48:25 914 1

原创 Unity RenderTexture实现 刮彩票、橡皮擦、擦除效果(3D物体)

一、实现效果:类似刮刮乐的擦除效果支持多笔擦除(一次擦不干净)二、所用技术点:RenderTextureShader三、实现原理:一个相机单独渲染笔刷轨迹,映射到,修改原图中对应笔刷路径uv的像素点的alpha值实现透明或者半透明1....

2020-05-29 11:29:01 7796 21

原创 Unity流光shader,无需图片

本片博客实现流光shader的方式无需黑色带有白道的图片,单纯通过计算实现,可以调节光带宽度、亮度、方向、角度,灵活性比较大。下面图是实现效果下面是代码的实现:Shader "Unlit/liuguang"{ Properties { _MainTex ("Texture", 2D) = "white" {} // 速度 默认左->右 _Speed ("Speed", range(-2, 2)) = 1.04 // 宽度 _Width ("Width",

2020-05-25 14:47:41 2519

原创 游戏AI,行为树,Lua框架

行为树(缩写BT),故名思议是一个树状结构,它是用树的方式来描述一个角色的行为。书本上的一些概念就不进行说明了。(本文仅代表个人理解的一个简易版的行为树框架,适用于轻量级的AI逻辑,处理不当的地方还请指出)下面直接介绍下行为树框架的大体组成:框架组成主要由下面几部分:BTNode - 节点基类功能:为各种节点提供基础函数基础函数:AddChild、RemoveChild、Clear、 Tick、Check、Evaluate等BTAction - 行为节点功能:具体行为执行的逻辑基础函

2020-05-11 11:47:49 1386 3

原创 Lua实现C#的Get/Set属性访问器

虽然Lua没有C#一样的属性,但是它的强大的元表和元方法能够实现很多功能,本篇博客就介绍如何用lua的元表和原方法实现C#中的get、set属性访问其功能。class.luaclass.lua是实现lua的类,我的之前博客有些过简易版的,属性访问的的实现相当于在最简易版的基础上进行扩展,博客链接:Lua 实现C#中的类local mt = {}function class(clsName...

2020-04-28 11:46:54 2315 1

原创 Lua 实现C#中的类

直接上代码:class.lualocal mt = {}function class(clsName, base) local cls = {} base = base or mt setmetatable(cls, {__index = base}) cls.clsName = clsName or "default" cls.base = base cls.new = fu...

2020-04-23 16:54:54 746

原创 消息模式/事件监听 lua

消息模式有三个主要对象,分别是:消息监听者:监听消息消息中心:存储、删除消息消息发送者:发送广播看下面的图,大概对每个部分的职能能够清楚的了解:下面是主要代码:Msg.lua相当于消息中心,对所有消息进行处理其中Remove的三个参数支持多种方式的移除消息方式,具体的可以参考代码逻辑进行理解和修改Msg = {}Msg.init = function() --[[ ...

2020-04-22 17:28:18 662

原创 Unity 自定义事件 AddListerner

Unity 自定义事件 AddListernerUnity中有的Button组件有onCick.AddListener属性,如果想要自己定义事件并能够像Button一样AddListener使用需要怎么做呢?Unity中提供有UnityEvent类来用作事件的声明,下面直接放上代码,再一一说明。CustomEventClass.cs/* 事件类型的声明类 */using UnityEng...

2020-04-17 14:18:10 5477

原创 C# 冷知识

C# 的冷知识:@,?,??,?: 的用法直接贴上一段代码,先看下面的代码public struct Vector{ int x; int y; public Vector(int x, int y){ this.x = x; this.y = y; }}public class MyClass { static int Func1(string @string, V...

2020-01-13 20:10:49 408

原创 Unity/C#、Python 参数传递

Unity的C#参数传递在使用Unity命令行时候用到参数时候,需要将参数从外部传递,在C#中读取。例如一个shell调用Unity的命令:# [unity path] -quit -projectpath [project path] -executeMethod [class.method] [platfotm]其中[platform]就是传递的参数,需要在C#中接收,接收方如下:...

2020-01-07 18:31:39 1765

原创 方便的Unity真机调试工具:LogViewer

再也不用为真机调试发愁!!项目开发时候有些调试需要在真机才能看到运行结果,例如:第三方支付、登陆、分享等功能。需要在真机上查看日志,每次插线调试很不方便,unity的AssetsStore终有一款免费的调试工具:LogViewer,此文章推荐大家接入LogViewer方便调试。1. 导入工具AssestStore 搜索 LogViewer,导入Unity。2. 创建LogViewer ...

2019-12-17 15:44:10 3010

原创 Unity 无限滚动

先看一下实现的效果:接下来详细讲解一下具体实现步骤:一、 创建好Content以及初始个数的item按照预设体的宽/高创建出Content的总长度。根据ViewPort,也就是绿色背景的宽度来创建初始个数的预设体。也就是ViewPort_Witdh / item_Width 向上取整并 + 1,显示部分是可以被看到的,但是在滑动那过程中,需要有一个临时item来改变位置。如上图未滑动时...

2019-12-12 20:27:01 2313 1

原创 Unity Mesh实现图片切割(三)- mesh绘制

Unity Mesh实现图片切割(三)建议了解mesh原理,此篇博客不对mesh详解,值针对此功能做简单介绍以及思路引导。一、 创建mesh要想自己创建mesh并应用,需要用到MeshRenderer和MeshFilter组件,Mesh就是MeshFilter上的一个属性值。若不考虑渲染图像,创建mesh需要声明mesh的顶点vertices和三角面triangles,顶点就是上篇博客最后...

2019-11-13 16:58:55 1949

原创 Unity Mesh实现图片切割(二)- 顶点计算

Unity Mesh实现图片切割(二)一、 计算画的线和图形线的交点求交点坐标直观的数学方法,就是求出两直线的方程,两方程求解。但是需要注意的是,直线垂直于X轴的特殊处理,因为垂直于X轴的直线斜率k趋近于∞,没有截距b。两直线平行是没有交点的,平行的依据是:1.斜率k相同;2.或者两条直线都是垂直于X轴二、 将顶点和交点按照画的线分区域(在线上、线上方、线下方)得到两个新的点集三、 分离...

2019-11-13 16:58:48 1348

原创 Unity Mesh实现图片切割(一)- 线与顶点

Unity Mesh实现图片切割(一)一、 PolygonCollider2D获取顶点和线段PolygonCollider2D中有points属性,对应和图形的顶点,PolygonCollider2D的顶点可以手动添加或者删除,右键Element X可选择删除这个点。由于Unity中所有图片都是连个三角面组成的矩形,在此需要手动拖动点勾勒出图片的有效切割范围。points属性的点顺序如图逆...

2019-11-13 16:58:38 1897

原创 Unity Mesh实现图片切割 - 概述

Unity实现图片切割效果 - 概述先贴上效果图一、用到的Unity相关技术1. PolygonCollider2D1. 顶点编辑2. LineRenderer1. 画线1.Mesh1. 创建mesh的顶点2. 设置mesh的三角面3. 设置uv贴图二、用到的算法1. 计算两线段交点2. 点集中的点按照线段分区域(线段上、线段上方、线段下方)3. 点集中的点按顺时...

2019-11-13 16:58:30 2024

原创 Unity Texture 下载、存储、使用

网络下载图片IEnumerator DownloadTexture(string url){ WWW www = new WWW (url); yield return www; if (www.isDone) { texture = www.texture; }}保存图片到本地void SaveTexture(){ string ...

2019-10-18 13:35:15 1449

原创 git stash 用法

git 贮存功能有时开发到一半,但是功能不完善,不能提交到远程分支,但是又不想回滚已经更改的代码,此时用到stashstash是栈结构,遵循先进后出规则存提交本地所有修改,或者部分修改,存到栈顶git add -A将现有修改全部贮存到本地,备注为xxxx,不加备注会自动填写一个备注git stash save "xxxx"查查看所有贮存的修改列表git stash list...

2019-10-18 13:30:17 184

原创 Git 用法总结,持续更新

记录Git用法,持续更新更新时间 2019-10-18 EamonnLi一、 checkout - 切换分支/检出文件1. 切换分支从当前分支切换到本地已有目标分支git chekcout local_branch2. 切换并创建新分支从当前分支创建新本地分支并切换到此分支git checkout -b new_branch3. 检出本地其他分支文件从branch_name...

2019-10-18 13:29:18 391

原创 Unity出多渠道包apk,Mac环境下对apk反编译并重签名

Unity出多渠道包apk,Mac环境下对apk反编译并重签名需要的工具apktool 按照下载页的提示进行下载dex2jar 找到dex2jar-2.0的最新release下载zipjarsigner(需要安装JDK)重签名流程PS:在流程之前先声明几个文件和路径新创建的文件夹为 User/liyiyuan/Desktop/ReSignTest需要重签名的apk为 base...

2019-06-05 23:57:26 607

原创 Unity后台自动打包,git自动更新、切换分支

亲看私人博客:https://yiyuan1130.github.io/unity/2019/06/04/auto-build-unity.html

2019-06-04 12:18:37 854

原创 Unity运行时(RunTime/代码)创建预设体

有事需要将SceneA中的一个对象在SceneB中使用,切换场景时候会将A场景对象全部卸载,此时就需要在切场景时候创建一个预设体,然后在SceneB中使用,动态的使用代码创建预设体,需要用到Unity的一个类PrefabUtility代码如下using UnityEngine;using System.Collections;using UnityEditor;using System....

2019-04-11 16:22:38 2761

原创 Unity用Mesh画多边形、圆形

首先贴上效果图上面两个图就是使用Unity的Mesh画出的正五边形和正八变形。无论是研究过Mesh还是只是有所听说,应该都听过网格,上面两个图形就是利用来网格的特性来实现的。首先讲一下Mesh原理无论渲染什么图形,就需要用到mesh将图形的形状展示出来,Unity中所有图形都是三角面组成,例如一个正方形一个正方形是由定点组成的两个三角片组成(三角形a和b),012组成三角形a,02...

2019-04-10 16:42:38 4293 3

原创 Unity AssetBundle 自动设置 assetBundle名

做项目时候有需求模块化更新,模块化的打bundle,作为程序开发人员,一次拿来多个模块的资源包,需要批量将资源包更改assetBundleName。如图例如:在BundleFloders目录下,有很多以文件夹为单位的资源包,需要全部设置assetBundleName可以写一个工具一键自动生成对应的assetBundleName代码如下:using UnityEditor;using ...

2019-04-04 17:17:41 2362

原创 权重随机(Lua)

实现权重随机步骤:构建一个权重列表,映射所有将数据表对应索引为的数据计算所有元素的权重总值 sum从 1-sum 中随机出要比较的值 toCompareWeightsum依次循环减权重表里面的权重值直到差值小于 toCompareWeight,此时的索引下标就是随机出来的,在原数据表中得到对应索引下标就是随机值--[[ function:权重随机函数 param1:...

2018-12-26 20:03:01 4120

原创 Unity2018与Android交互

Unity2018与Android交互本文适合于了解Unity2018以前的版本与Android交互通信的读者,此文将介绍Unity2018和Android交互通信,不用像以前一样繁琐的搭建AndroidStudio工程做jar包。交互流程Unity开发过程中,会有接入第三方平台SDK的需求,如接入微信登录、支付宝支付等需求,由于Unity不能和这些第三方平台直接交互,需要Android系统...

2018-11-07 17:19:06 1871 6

原创 Unity UI Text 计算字符距离

在开发过程中,会遇到在文字中间替换、添加一些空间的需求,本篇文章就为大家分享一下如何计算Text控件中字符位置。首先介绍一下计算方法和思路。 如上图所示,字符都是通过三角面形式渲染出来的,每个字符都在两个三角面组成的框题中显示。我们不能直接计算出某个字符的位置,要想计算单个字符的位置,就是计算字符所在框体的四个顶点。 在3D场景或UI界面中,我们很容易拿到当前对象的Transfrom、

2018-08-18 14:41:25 1324

原创 Unity 划线 - 使用Image实现划线

unity使用Image实现划线功能

2018-02-06 18:40:07 10515 3

原创 Unity3D UI EventTrigger 动态绑定UI事件

Unity3D UI 动态绑定UI事件

2018-01-31 19:41:19 4113

原创 unity/C#中扩展方法类

在编程过程中,很多时候会用到unity/C#中已经给定的方法,但是有时候,这些给定的方法并不能满足我们的需求,在使用给定方法的时候还需要用到别的操作,这些操作往往是固定的。如果每次使用给定的方法时候都手动添加,会造成代码的冗杂,代码量变多,所以此时我们要将给定的方法进行拓展。扩展方法的创造: 扩展方法其实就是编程人员自己写一个方法,这个方法内包含了系统给定的方法,还包含了开发人员自己需要进行的操作

2017-11-11 13:34:59 503

空空如也

空空如也

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

TA关注的人

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