自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity和Android的交互

Unity和Android原生交互的方式大概有2种,一种是Android导出jar/aar包给Unity,然后Unity来构建apk;另外一种是Unity勾选Export Project,导出为一个Android工程,然后用AndroidStudio构建APK;这里讲讲第一种方式。

2024-04-06 14:14:09 899

原创 Unity 在Unity端申请Android权限

前段时间还在职的时候,遇到这么一个问题:SDK首次调起相机接口进行拍照的时候,会调起2次相机。并在第2次拍照后闪退。分析了一下,都是发生在首次获取权限时才会发生,拿到权限就不会了。并且2台会发生这种情况的Android版本都是13。猜测是SDK获取权限接口没有适配好android13,于是尝试先把TargetAPI降到Android 10. 如下图,不过还是会闪退。然后想了另外的办法,既然SDK是在申请权限的时候闪退,那我这边先自己申请好权限后,再调SDK的接口,SDK因为已经有权限就不用申请。

2023-07-05 15:18:50 3350 2

原创 Unity Odin特性解析

Odin是Unity里一款非常强大的编辑器插件,它提供了很多丰富的特性(Attribute),可以用来丰富编辑器的显示和交互。下面列举一些好用的特性。功能:CustomValueDrawer 修饰字段,可以把本来的绘制方法改成自定义的绘制方法语法:CustomValueDrawer(“方法名”)示例://原始//自定义显示字段1//自定义显示方法1,使用固定值//自定义显示字段2//自定义显示方法2,使用From & To 作为变量//自定义显示字段3。

2023-06-24 16:05:13 1919

原创 lua知识点

平常开发中C#用得比较多,lua没有重度使用过。这里主要记录一下lua的知识点,供自己回顾在 Lua 中,元方法(metamethod)是一种特殊的函数,它们被用来定义表的行为,元方法被存储在一个独立的metatable元表中。例如,在表中使用 + 运算符时,Lua 会查找其元表里是否有 __add 元方法,如果有,则使用该元方法实现表的加法操作。

2023-06-20 17:21:22 164

原创 Unity溶解Shader

嘿嘿,今天我们继续来实现溶解效果。

2023-06-17 16:56:07 863

原创 Unity 扫光Shader

今天我们来实现一个扫光Shader。

2023-06-17 14:59:40 1813 3

原创 Unity 2D内描边Shader

今天,我们来实现一个2D内描边的效果。内描边:即把边缘像素变成描边的颜色,占用原来的像素。思路:我们可以在片元着色器实现此效果:当一个像素本身不是透明的(alpha>0),而且它上下左右4个像素的alpha值的乘积等于0,那么我们可以判定该像素处于边缘,让它变成描边颜色就可以。

2023-06-15 16:15:33 772

原创 Unity 2D外描边Shader

今天,我们来实现一个2D外描边的效果。外描边:即在边缘透明像素周围加上一层描边,不占用原来的像素。思路:我们可以在片元着色器实现此效果,当一个像素本身不是透明的(alpha>0),那么让它返回自身的颜色;当一个像素本身是透明的,并且它上下左右4个像素的alpha值总和不等于0,那么我们可以判定该像素处于边缘,让它变成描边颜色就可以。

2023-06-15 11:54:04 1674

原创 Unity RawImage和Image的区别

而使用RawImage,就得根据Texture2D的宽高比,自己计算比例了。而 RawImage 则更适用于显示未经处理的Texture2D纹理或使用特殊格式的纹理。RawImage可以直接使用Texture2D,而Image使用Sprite。这时我们需要对Texture2D进行颜色空间转换,如下图。Image 组件主要用于显示 Sprite 或其他常见格式的 2D 图像,有时,我们想借用RenderTexture把相机的画面转成图片,如下图。如果直接显示,那么有可能显示出后,图片黑黑的,和原图不一样。

2023-06-07 21:10:38 1129

原创 Unity编辑器拓展(三)-拓展Inspector窗口

我们平常的需求都是在原有的基础上加按钮或其他操作,所以这里核心的 DrawDefaultInspector();要加上,这样会绘制原来的变量。不添加的话,原本的变量就不显示出来,除非自己也写一遍。另外,既然我们为Map重写窗口,那常见的业务是拿到Map类。可以通过下面代码来拿到map。接下来我们需要创建一个类继承Editor,并增加CustomEdtior注解,代码如下。好了,写完效果如下,按钮就出来了。可以看到原始的效果,如下图。

2023-04-10 22:37:24 434

原创 Unity URP相机使用简介

使用URP后,相机组件的面板发生了变化,如下图。接下来简单的介绍下URP下的相机使用提示:以下是本篇文章正文内容,下面案例可供参考。

2023-03-24 17:05:27 2073 2

原创 Unity/C# Xml序列化 与 二进制序列化

游戏里,我们经常遇到这种情景:要保存一些数据为文件,方便运行时再次读取使用。这就涉及到了序列化与反序列化序列化:通常的来讲,就是把 对象 转成 二进制序列。可以简单的理解为把对象转成一个文件反序列化:反序列化是序列化的相反操作。可以简单的理解为,是把文件转为对象的这么一个过程既然是需要把对象序列化为xml文件,那么为了方便测试,这里定义2个测试类//使用[XmlAttribute]特性,生成的xml标签等于该字段名‘val1’ [ XmlAttribute ] public int Val1;.......

2022-08-12 23:28:14 1121

原创 lua常用函数解析

lua里有一些常用的函数,这里会一些函数说明下string.sub用于截取字符串, 截取str,从startIndex到endIndex的字符串;math.fmod(x,y) 取余math.fmod用于求 x/y的余数,如果x,y都是正数,那其实类似于 x%ymath.modf(x) 分割整数和小数math.modf用于分割一个数的小数与整数部分后续有新的了解再更新...

2022-06-17 14:38:10 505

原创 Lua ipairs与pairs的区别

ipairs与pairs的区别

2022-06-07 20:55:58 833

原创 C# 对 List<结构体>里的值字段赋值报错的解决方法

C# 对 List<结构体>里的值字段赋值报错的解决方法一、报错分析二、解决办法1:对临时副本进行修改,最后再赋值回去2:把结构体修改成类3:把结构体的值字段封装下引用字段里三、官方参考文档一、报错分析 //定义结构体 public struct MyStruct { public float a; public float b; } //报错场景复现 void Main() { List<MyStru

2022-02-26 23:39:33 2770

原创 Unity Quaternion四元数 常用API解析 和 旋转插值动画实现

Unity Quaternion四元数常用API解析 和 旋转插值实现一、Quaternion常用APIQuaternion.FromToRotation(Vector3 fromDirection, Vector3 toDirection)Quaternion.LookRotation(Vector3 forward, Vector3 upwards = Vector3.up)三级目录一、Quaternion常用APIQuaternion.FromToRotation(Vector3 fromDire

2022-02-25 16:33:14 6846 1

原创 python BeautifulSoup库使用解析

BeautifulSoup库使用解析一、前言二、使用引入库创建beautifulSoup对象类型BeautifulSoup类型Tag类型一、前言BeautifulSoup是一个html文档解析库,在爬虫解析数据时,十分有用。接下来记录下它的用法。二、使用引入库from bs4 import BeautifulSoup创建beautifulSoup对象通过文件,创建beautifulSoup对象file = open("./Test.html",encoding="utf-8")so

2022-02-15 14:24:28 1208

原创 python读写Excel文档

python读写Excel文档一、前言二、需要的库三、对象类型四、使用xlwt库来写Excel文档引入库写入举例效果五、使用xlrd库来读Excel文档引入库读取举例六、完整代码一、前言使用python读写Excel库十分方便,安装 xlwt和xlrd 两个库后就可以愉快的玩耍了。接下来我们看下怎么使用吧二、需要的库xlwt库,写Excel文档xlrd库,读Excel文档三、对象类型Workbook类型:workbook即工作簿,对应一整个Excel文档,这个不用多解释;Workshe

2022-02-14 11:35:03 590

原创 Unity各平台下的Application.xxxxPath解析

Unity各平台下的Application.xxxxPath解析前言权限解析各平台下的路径windows安卓解析IOS前言Unity下有Application.dataPath,Application.streamingAssetsPath,Application.persistentDataPath,Application.temporaryCachePath等路径。我们经常要去读写这些路径,或者进去进到目录里去查看存在什么文件。所以下面主要从 读写权限 和 路径 来解析这些路径名。权限路

2022-01-06 11:56:27 3510 3

原创 Unity UnityWebRequest使用方法

Unity UnityWebRequest使用方法简介结构详情一、和WWW的区别二、构造方法三、封装的构造方法四、使用举例Get()Post()读取过程中显示进度简介UnityWebRequest 提供了一个模块化系统,用于构成 HTTP 请求和处理 HTTP 响应。结构UploadHandler: 处理数据到服务器的传输DownloadHandler: 处理从服务器接收的数据的接收、缓冲和后处理UnityWebRequest: 对象管理其他两个对象详情一、和WWW的区别WWW和Uni

2021-12-15 16:07:26 10388

原创 Unity花屏解决方案

Unity花屏解决方案前言花屏原因三级目录前言上次在项目中,遇到了一次android打出来的包,在点击‘开始游戏’按钮时,会花屏的现象。一开始是有点懵的,不知道如何下手。不过网上搜了下后,有了思路,具体可以看看这篇博客Unity3d花屏处理,写得很好。这里也记录一下自己解决时的思路花屏原因场景里有渲染3D模型的相机,也有一个UI相机。所有相机的clear flags都是depth only,三级目录...

2021-12-14 17:16:01 5940

原创 Unity判断一个物体是否在相机范围内

Unity判断一个物体是否在相机范围内思路代码注意点思路先说下思路,先把物体从世界坐标转到该相机的视口坐标viewPos,如果满足这两个条件:0<viewPos.x < 10<viewPos.y < 1则可以认为物体是在相机视口范围内的。然后还需要满足有一个深度的问题,即camera.nearClipPlane <.viewPos.z < camera.farClipPlane视口坐标viewPos的z值也是有意义的,表示距离相机的深度。需要满足

2021-11-22 11:44:27 6940 5

原创 Unity Shader TRANSFORM_TEX()方法解析

TRANSFORM_TEX方法解析前言解析前言在顶点着色器的模板代码里,我们经常可以看到TRANSFORM_TEX()方法的身影,如以下代码 v2f vert(a2v v) { v2f o; o.pos = UnityObjectToClipPos(v.pos); o.uv = TRANSFORM_TEX(v.uv,_MainTex);

2021-11-16 10:46:14 3180 1

原创 Unity Shader结构

Unity Shader结构一、前言二、骨架三、Properties 属性格式属性介绍一、前言Unity Shderlab不常写的话,总是一个模模糊糊的状态,容易忘记。这里列举一下ShaderLab的语法结构二、骨架Shader "Unlit/NewUnlitShader" // 名字{ Properties //属性 { } SubShader { Tags { "RenderType"="Opaque" }

2021-11-15 17:09:43 2596

原创 VS Code Shader插件

VS Code Shader插件前言插件列表前言写shader用什么编辑器比较好呢。方法有挺多,可以用VS, Rider, VS Code等等…VS 和 VS Code需要安装插件。 Rider不用安装插件,自带颜色高亮,2021版对Shader的支持也挺好的。自我感觉用VS Code是最舒服的,比较轻量,而且安装上一些插件后写起来挺友好的,提示,语法高亮,格式化都有。插件列表这里列举一下插件:Shader languages support for VS Code 代码高亮和提示Shad

2021-11-15 11:14:36 2048 3

原创 Unity WWW使用方法

www使用方法概念请求类型Get 请求Post请求实际使用要实现的功能Get请求Post请求Headers头验证概念WWW是基于HTTP协议,我们可以用它来发送HTTP请求。一般来说,请求有两种方式:Get请求Post请求的网络传输功能,使用HTTP协议传输数据有多种方式,Unity的WWW主要支持其中的GET与POST方式。GET方式会将请求附加在URL后,POST方式则是通过FORM的形式提交,GET方式最多能传递1024个字节,POST方式理论上没有限制。从安全角度来看POST比GET

2021-11-02 21:01:32 2606

原创 UGUI锚点适配

UGUI锚点设置UGUI锚点锚点图锚点类型锚点类型一:相对于父节点的某一点的位置锚点类型二:与父节点的两边保持固定距离与父节点的左右两边保持固定距离UGUI锚点锚点图设置锚点时,可以看到这个界面。这就是我们可以设置的锚点拉锚点类型锚点可以分为3类;锚点类型一:相对于父节点的某一点的位置如下图,绿色框框出来的这9个锚点属于这种类型;这种类型的4个锚点会汇聚到一起(每个小三角形是一个锚点),如下图;坐标有4个参数,PosX和PosY代表 中心点Privot相对于此聚合锚点的位置。锚点类型

2021-10-21 19:45:09 854 1

原创 Unity编辑器拓展-写一个查看当前所有PlayerPrefsKey的窗口

创建一个PlayerPrefsKey查看器效果图前言开发一、获取数据目录结构二、开发编辑器窗口效果图思路一、绘制搜索栏二、定义PlayerPrefs数据结构体三、根据搜索框过滤数据四、绘制主框体五、完整代码效果图前言PlayerPrefsKey现在其实用得并不多,不过也有一些应用场景。最近开发过程中,发现要删除一个PlayerPrefsKey,有点麻烦。可以写代码删除 或者 去注册表删除。都是都感觉有点麻烦,而且也没法知道当前已经设置了哪些PlayerPrefsKey。 所以就想做一个窗口来查看当

2021-09-15 16:36:53 717

原创 Unity编辑器拓展(二)-GUI控件的使用

GUI控件的使用一、效果图二、创建窗口三、使用控件来绘制窗口不可输入控件GUILayout.Label 标签可输入控件GUILayout系列GUILayout.TextField 单行文本GUILayout.TextArea 多行文本EditorGUILayout系列EditorGUILayout.IntField() 输入整数EditorGUILayout.FloatField() 输入浮点数EditorGUILayout.TextField() 输入单行文本EditorGUILayout.TextAre

2021-08-17 20:46:18 2607

原创 Unity编辑器拓展(一)-MenuItem的使用

MenuItem的使用一、参数介绍二、验证函数三、优先级一、参数介绍MenuItem是一个特性,修饰静态方法,可以在Unity顶部菜单出现相应的按钮。MenuItem有三个参数,分别如下: 1:路径: string 类型。用 ‘/’ 来分割路径 2:是否是验证函数:bool 类型,默认为false 3:函数优先级:影响在面板上的出现顺序,默认为1000举例 [MenuItem("Learn/Log1",false,1000)] public static

2021-08-17 15:02:34 7690 2

原创 Unity编辑器拓展-查找GameObject被哪些组件所引用

文章目录前言一、效果图二、思路三、实现1. 获取所有的物体2. 过滤掉一些不要的物体2.1 只获取是根节点的Transform2.2过滤预制体3. 判断一个根节点里的所有组件是否引用了查询物体四、完整代码总结前言有时需要查找一个GameObject有没被场景里的哪些组件引用,直接查效率比较低,而且还可能漏了,这里做了一个小工具来查找一、效果图二、思路想知道一个组件有没有引用到我们的GameObject,可以获取这个组件的所有字段,即FieldInfo。 然后遍历所有的FiledInfo,

2021-06-18 20:09:15 1513 4

原创 C# Directory 遍历文件夹

前言:编辑器拓展常常要访问到文件目录。所以文件相关的操作挺重要的。这里记录下遍历文件的方法目录1. 先列举下会用到的类2. 遍历目录里的所有文件获取一个目录里的所有文件获取一个目录里的所有文件夹获取一个目录的的所有文件夹和文件(方法1)获取一个目录的的所有文件夹和文件(方法2:自己递归)1. 先列举下会用到的类- **FileInfo** : 文件类(不包括目录)- **DirectoryInfo** : 目录类- **FileSystemInfo** :通用文件类,可以是文件,也可以是目录。

2021-06-18 14:16:06 854

空空如也

空空如也

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

TA关注的人

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