自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#判断字符是否为utf16编码

unity截取显示微信昵称后,出现异常Error: UTF-16 to UTF-8 conversion failed because the input string is invalid,原因是截取字符串刚好截到了表情后面,解决思路是从截取到的索引向前遍历,找第一个不是utf16编码的字符,然后显示。

2023-09-05 15:18:21 530

原创 huatuo(hybridclr)热更新踩坑笔记

测试3:依然把热更框架单独生成asmdef,但是不放在热更asmdef列表,而是放在Assembly-CSharp文件夹,然后其他热更资源再对其进行引用,此时因为热更框架本身就在Assembly-CSharp文件夹,所以主工程不需要再设置成asmdef,可以直接使用,结果成功!但实际情况是,A作为最先启动的热更Asmdef,加载代码是写在主项目里的,没办法热更代码,此时可以换一种方式,通过反射加载,代码示例如下,其中新加脚本HotUpdate3_1为B的asmdef中的另一个类,也可以加载到。

2023-08-02 13:58:48 838

原创 Unity 脚本去除导入FBX文件的顶点色,UV2,UV3

【代码】Unity 脚本去除导入FBX文件的顶点色,UV2,UV3。

2023-04-04 11:50:41 795 6

原创 Unity优化材质,清除空引用贴图

美术创建材质的时候如果没有选择shader,那么创建的是默认shader材质,文本编辑器打开材质文件(.mat),会发现有很多没有默认的texture,如下图,此时美术切换材质到目标shader,虽然编辑器里面的inspector会变化,但是查看材质文件(.mat),发现那些贴图的定义还是在,这种情况下会被uwa检测为 “包含空纹理采样的材质”。如果在创建材质时选中shader,则没有这个问题。注:该问题不清楚unity打包时是否会自动清除,因为没法检测。

2023-04-04 11:45:21 509

原创 Unity导出Fbx文件的动画片段并优化

导出Fbx的动画片段,这里导出单个动画片段,需要导出多个的,使用AssetDataBase.LoadAllAssetsAtPath,然后对asset进行遍历,判断是否为动画片段,再进行下一步操作。代码中包含项目中使用的非关键代码,并不影响查看。对生成的动画片段进行压缩优化,AnimationOptimize.OptionalFloatCurves逻辑实现如下,注释比较完整。

2023-03-28 16:39:50 967

原创 UGUI 摇杆

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;/// <summary>/// 基于UGUI的摇杆/// </summary>public class JoystickUGUI : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHand.

2022-05-19 15:03:16 140

原创 Unity2020.3.23 + Visual Studio2022生成项目时不生成dll文件

用这两个版本结合开发ILRuntime时,发现生成Hotfix工程一直失败,原因是找不到model工程的dll文件,搜索了半天没有解决,各种换.Net版本也无效,新建空项目也是没有dll生成,不清楚到底是怎么回事。再另一台机器上用Unity2020.3.23 + Visual Studio2017创建并打开项目,就可以生成 dll文件。然后下载Visual Studio2017测试,确实没问题。没办法只好更换版本了。其他版本不知道什么情况,可能新版本需要设置什么地方我不清楚,但是因为这个再耽误开发感觉划不来

2021-12-29 14:42:10 2996 5

原创 Unity 禁止Inspector视图编辑

没有找到有该功能的宏,曲线实现一下,主要应用在某些不想让手动编辑的Asset。#if UNITY_EDITOR[CustomEditor(typeof(******))]public class ******Editor : Editor{ public override void OnInspectorGUI() { GUI.enabled = false; base.OnInspectorGUI(); }}#end...

2021-12-28 17:04:12 2333

原创 c# 反射修改父类的私有变量

Unity写工具的时候碰到的问题,要自动给预制体添加组件并赋值,但是组件有一个变量是私有的,无法修改,而且因为组件脚本是在Package里面,所以无法修改,如果把组件源码放到项目中的话修改使用的话又不利于组件更新,所以想到了用反射去修改私有变量并赋值。 如果一个类没有继承关系,修改时获取字段并修改即可,代码如下。 var t = gameObject.GetComPonent<T>(); t.interactionLayer...

2021-12-15 18:41:49 2174

原创 List.Sort异常笔记

list随机排序一直用的重写比较器,然后random返回数据排的。没想到会有这个问题,之前运行时报错:Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields differe...

2021-12-07 11:55:24 1575

原创 UGUI InputField 无法唤起键盘

unity2018.4.18版本存在的bug,在unity2020.3.21版本已修复,具体开始修复的版本未知。bug表现为在点击InputField输入后,点击输入法键盘上的“完成/确定”等字样隐藏键盘(以下称正常方式),可再次点击InputField唤起输入法,不点击输入法键盘上的“完成/确定”等字样,直接点击屏幕上输入法键盘外位置(以下称异常方式),会自动隐藏输入法键盘,此时点击同一个InputField,会无法唤起输入法键盘,无法输入。此时再次点击InputField外其他位置,接着...

2021-10-28 15:14:25 2413

原创 qq互联ios sdk导入后编译报错Redefinition of ***

报错脚本是sdk 的TencentOAuth.h脚本,各种百度谷歌找不到答案,结果客服回复是需要修改sdk的文件。修改sdk目录下的module.modulemap文件,修改成以下内容:framework module TencentOpenAPI { header "QQApiInterface.h" header "QQApiInterfaceObject.h" header "TencentOAuth.h" header "TencentOpenApiUmbrel...

2021-10-18 16:05:54 2182 3

原创 unity打包报错,又是血压升高的一天

unity打包遇到的报错,部分在androidstudio里同样方式解决首先说一个还没搞明白的问题。项目之前打包一直使用的Internal模式,一直没有问题,在没动过所有与sdk有关的文件(包括架包,清单文件等)的情况下,突然打包输出了问题1的错误。意思是清单文件配置了这个占位符,需要在gradle里提供占位符对应的值。比较奇怪的是,之前一直用的Interneal模式打包,没有使用自定义gradle文件,理论上是必不可能打出来包的,但是之前确确实实没问题,实在不清楚为什么会突然这样,猜想唯一...

2021-08-10 17:45:55 1182

原创 Unity编辑器拓展窗口常用组件笔记(持续更新...)

1

2021-06-28 17:58:45 701 2

原创 Unity WebCameraTexture笔记

记录下代码,其中很多问题没弄清楚,只是可以这样使用。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Main : MonoBehaviour{ public int index; public RawImage targetImg; public WebCamTexture current

2021-06-22 15:39:12 411

原创 xlua使用unity协程笔记

记录一下,代码及注释如下,具体使用还需加工,需要单独写类去管理local util = require 'xlua.util' --xlua封装好的工具类,路径xlua/Resources/xlua/util.lua.txtlocal go = CS.UnityEngine.GameObject("corGo") --创建对象,不需要new关键字local coroutineCom = go:AddComponent(typeof(CS.CoroutineMine)) --空脚本,无逻辑代码,只

2021-05-11 17:51:44 545

原创 二进制在数据存储上的应用

分享一个二进制的应用。应用场景举例,在游戏中,存在一些非固定顺序的新手引导,需要存储玩家引导的数据,各个引导是否执行过,依次来判断是否触发。比如有十个步骤,我们可以通过使用键值对来存储这些引导的状态,key为引导id,value为引导状态,修改的时候直接去赋值即可。今天分享另一种更为高效,节能的存储方式。代码及运行结果如下:class Program { static Dictionary<string, int> datas = new Dictionary&

2021-03-01 15:34:25 230

原创 监听Unity编辑器事件,修改Unity编辑器标题

下午看到有这样需求,然后想到前些天做的去除窗口标题,应该是类似的效果,就去试了下。使用场景,接手别人的项目时,需要同时开两个或多个项目进行运行对比,由于项目名一样,编辑器版本一样,无法区分,所以需要修改编辑器窗口标题依次来区分。最初想到的是直接在editor模式下修改标题即可,结果发现,当编辑器切换到运行以及编辑器切换到结束状态时,标题都会重置。所以需要监听状态,修改标题,可以用EditorApplication.playModeStateChanged监听编辑器的状态改变。代码如下,两个脚本,一个

2021-02-04 18:21:54 959

原创 Amplify Shader Editor 案例解析系列——(6)HologramSimple

前言该篇分析第六个案例,HologramSimple。后面会发现,很多知识都是之前案例中用过的,所以相关方面不再进行分析。正文按照Comment的顺序分析,首先观察效果,为方便观察效果,这里新建球体赋予材质,因为案例中的效果,不单单是这个shader的效果,还与模型有关,模型分三个材质渲染三层网格,最外层的材质是本文要分析的shader,修改透明度为1,加深效果,由于shader中常量值设置问题,这里有两张效果图,方便观察,第二张图是对第一张图的球缩放10倍的效果,后面会分析为什么要这样做:

2021-01-25 18:23:06 509 2

原创 Amplify Shader Editor 案例解析系列——(5)HighlightAnimated

前言该篇分析第五个案例,HighlightAnimated。正文按照Comment的顺序分析,首先观察效果,为方便对比,关闭了中间球的效果:发现有以下效果:1.对象表面有高亮,即外发光,但是同一个表面上,高亮程度不同2.对象表面的高亮,有闪烁效果,该效果需要材质参数,默认参数效果不明显分析Comment:1.Textures Comment注册各个贴图,以及贴图与颜色的混合,不做赘述2.Highlight Level (Ping pong animation) .

2021-01-15 18:03:19 524

原创 Amplify Shader Editor 案例解析系列——(4)ForceShield

前言该篇分析第四个案例,ForceShield。正文由于该案例中shader使用了大量的局部变量,按照效果分析时,会有变量还“未定义”,不知道其含义的情况存在,从而导致过于杂乱,所以这个案例我们按照comment从左上顺序开始分析,分析各个变量的输出意义。不过首先我们看一下该案例的效果。发现效果有以下几处:1.球体表面在不规则的像水波纹一样在浮动2.球体表面的六边形在缓缓像下平移3.球体与立方体相交的位置,显示不同,如被切开4.图2中,被子弹击中的位置,呈现白色.

2021-01-15 12:30:30 1325

原创 Amplify Shader Editor 案例解析系列——(3)EnvironmentGradient

前言该篇分析第三个案例,EnvironmentGradient。正文首先观察效果发现效果有以下几点(不考虑法线贴图,无影响) :1.相同的海拔,地面平缓度不同,颜色不同,越陡峭的地方,颜色越冷;2.不同的海拔,地面平缓度相同,颜色不同,海拔越高,颜色越冷;3.修改shader后可预览,无法言传...只是一个纹理合并的效果,使效果更加真实;然后对效果进行一一解析:1.区分平缓度,使用的是世界空间下的物体的法线,然后对其进行处理,输入到lerp 的alpha,对颜色.

2021-01-12 14:36:09 510

原创 Amplify Shader Editor 案例解析系列——(2)DissolveBurn

前言该篇分析第二个案例,DissolveBurn。正文这里我们同样拿cube去分析效果,没必要使用原模型,原理是一样的,首先复制案例中的shader,创建新的材质,赋予给一个cube,修改Dissolve Amount值,可以看到消融效果,分别展示Dissolve Amount 为0,0.5时的效果发现效果有以下几处(不考虑模型纹理贴图与法线贴图,与效果无影响):1.cube内部也可以渲染出来2.cube表面有透明区域,并不是完全铺满的,修改Dissolve Amount值也可.

2021-01-12 14:35:55 661 2

原创 Amplify Shader Editor 案例解析系列——(1)2Sided

前言该系列文章对ase官方案例进行流程分析,旨在记录自己的理解,如有错误之处恳请指出。尽量保持持续更新。使用插件版本为1.64,下载地址https://download.csdn.net/download/a598211757/13985994,该篇分析第一个案例,2sided。正文这里对cube的效果进行分析,首先看从不同角度看向目标的效果图: 发现效...

2021-01-12 14:35:42 830

原创 c# Environment.GetCommandLineArgs

官方释义:返回包含当前进程的命令行参数的字符串数组最开始接触这个api是unity自动打包时读取传入参数的,但是当时一直不清楚这个参数是通过什么样的形式去传递的,直到今天写批处理时才明白是怎么回事。首先这个参数获取到的值默认有一个,即该进程的文件名(“***.exe”),然后其他参数参数才是命令行传入的参数,传入方式为在命令行执行程序,后接参数。测试一下,首先写一个c#控制台程序,做简单的输出,代码如下: static void Main(string[] args)

2020-11-04 16:43:58 2778

原创 程序的魅力,自动化执行应用程序进行批处理操作

再次感叹下程序的魅力,节省了太多的成本。开发中需要用到Criware插件cpk类型的视频文件,没有cpk文件,只能找工具进行转化,墙了好久才找到一款工具,但是奈何工具只能单个单个文件的操作,而且需要手动命名,八百个文件,不谈时间,耐心也不够用,所以想到写批处理执行应用程序来实现自动化解决问题。由于没有操作过其他程序,所以这里只拿这个举例......可能不尽相同那么面临的第一个问题就是程序里面用到的参数,怎么去赋值传递。首先看一下该程序的目录文件以及界面:其中有两个exe应用程序文件,

2020-11-04 16:06:48 799

原创 Unity Ugui快速定位选中UI组件

项目开发到后期之后,考虑性能优化,Ugui需要创建多个Canvas渲染不同的界面,然后会导致想要在scnec视图选中某个组件时,点击许多次都无法正确选中目标对象,给调试带来不便,这里使用EventSystem实现快速选中的效果。代码注释如下using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using UnityEngine.UI;using UnityE

2020-10-16 17:33:19 1709 1

原创 MemorySystem笔记

属性,函数见https://docs.microsoft.com/zh-cn/dotnet/api/system.io.memorystream?view=net-5.0using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.Runtime.Serialization;

2020-06-14 16:16:22 397

原创 记一次unity3d 游戏帧率踩坑的过程

优化方面,除了平时顺手做的代码方面优化,对象池以外,基本上没怎么去关注过,所以这一方面蛮白痴的。今天发现游戏帧率从一开始的100左右,会随着运行时间逐渐降低,甚至降到个位数,所以只能去查阅这方面的资料进行优化了。文章没有一点干货....没有具体的优化方法(因为我也不知道.....),旨在记录一次分析过程,以便后续碰到类似问题时不会无从下手。首先使用的分析工具是unity的framedebugger,去对边前后drawcall的数量,发现即使已经勾选了动态批处理,但是场景中的同一种对象,竟然每个是一个

2020-05-29 01:38:16 5163

原创 Unity移动过快导致射线检测失效的原因及处理方式

直入正题,检测失效的原因如图,设此时子弹,射线,碰撞体属性都如图所示,这里射线从子弹的坐标位置发出,发出位置可以通过修改预设或者增加偏移量的方式进行修改。可以看到,第一帧进行射线检测时,子弹距离碰撞体太远(或者说射线长度不够)导致并没有检测到碰撞,结果第二帧时,子弹已经飞过了碰撞体,此时再次进行射线检测,当然也不会检测到,如此就导致了射线检测失效。怎么去解决这个问题,很简单,增加射线的长度即可,但是增加多少呢?假如这里把射线长度增加到2000,那么第一帧必然能检测到碰撞体,但是如果像下面这种情况

2020-05-23 17:09:40 2051

原创 FairyGui 代码给组件赋值控制器

以显示控制器为例,代码如下//GearXXX对象是控制器和属性之间的连接。0-显示控制,1-位置控制,2-大小控制,// 3-外观控制,4-颜色控制,5-动画控制,6-文字控制,7-图标控制GearDisplay gear = (GearDisplay)yourGobject.GetGear(0);gear.controller = yourController;gear.pages...

2020-04-16 14:23:50 1025

原创 使用build.gradle 配置签名信息与多渠道打包参数配置笔记

最近看一个热更的demo,看到了多渠道配置,比较感兴趣,记录一下,备用。使用的是flavorDimensions(风味维度???),首先在build.gradle 的android{}闭包里面定义一个flavorDimensions,这里我取名“channel”。然后同样在android{}闭包里面定义并配置productFlavors。这里配置了包名与androidmanifest 的met...

2020-03-18 15:21:14 658

原创 记坑 unit fbx文件导入后model页签 scale factor无法修改

踩了一个别人的坑,实在是太坑了。

2020-03-10 17:38:02 364

原创 Lua实现另类计算器

Lua的使用现在基本上属于游戏行业的必备技能了,由于项目中没有使用,所以看过几次教程,实验过几次,一直没有系统的写点东西,导致看完过了多久就忘了。这两天又看了遍,准备着手随便做点什么,熟悉下,做什么呢,当时是做计算器啊~以前用c#做过另类计算器,思路上基本是一样的,即把没有括号的式子的数字和符号分割,然后遍历符号计算结果,计算之后替换原式子,把括号消完就好了,具体描述见另一篇文章https:/...

2019-08-29 16:54:29 1102

原创 热更新之Assetbundle——加载

加载的类型有很多种,比如预设,图集,字体,shader,但是项目用中用到的只有预设和图集这两个,其实这两个完全可以写在一个方法里面,但是一开始就分开写了,所以就写了两个方法。我这里选择把加载过的bundle存入一个字典,下次需要加载的时候去直接获取(其实一个字典就足够了)。加载的步骤是先根据传入的bundle名字,通过主配置文件manifest去获取该bundle的依赖,然后把加载这些依赖之后,再...

2019-07-09 14:29:55 309

原创 热更新之Assetbundle——下载

Assetbundle的下载这一块,是耗时最久的,也是最复杂的。步骤为对比版本号,不同则对比信息配置文件,然后去差异下载更新。做之前听网友们说已经不用www了,说是besthttp插件,非常好用。然后去试了下,确实好用,但是后面下载写入的时候会偶尔报异常,下载0kb的文件,而且看log根本看不出个所以然,没办法又换回了www。besthttp有个比较好的地方是可以设置下载到一定的量就去触发下载回调...

2019-07-09 11:10:22 498 2

原创 热更新之Assetbundle——上传

目前使用的是NetBox2,模拟当前文件夹为文件服务器,这个就.....没什么好说了,以后使用实际文件服务器时候再补充。

2019-07-08 18:33:52 271

原创 热更新之Assetbundle——创建

最近实验下assetbundle的热更,本来以为很简单,就创建,上传,下载,加载。但实际上开发的时候才发现个中细节多且复杂。创建本来以为就一句api就可以了,但是实际操作起来,才发现想的过于简单。首先,命名,那么多图集,预设,不可能去手动命名,所以要写一个工具。工具原理就是根据文件名,去自动修改文件的assetbundleName以及后缀assetBundleVariant。需要注意的是,...

2019-07-08 18:26:03 464

原创 记坑 Androidstudio gradle failed: out of memory java heap space

用as打包的时候,碰到这个报错,java heap space,以前碰到过,然后重启as就好了,碰到了几次都是这样解决的,以为是电脑运行程序太多了。但是昨天又碰到了,而且重启不管用,甚至重启了电脑,然后百度了很久。有说在gradle.build 里面加配置,具体叫什么名字忘了,有说在gradle.properties里面加配置,还有说改环境变量的。第一种方法试了,不行,第三种没有试,感觉不靠谱...

2019-02-26 18:54:30 3706

原创 unity开发简易的本地音乐播放器

由于项目需要,做了个简单的本地音乐播放器demo,记录一下,万一以后就用到了。UI不方便贴图,只贴关键功能的代码。功能1:从本地选择音频文件。 这部分代码是在网上搜索到的,由于不知道原创是哪位前辈(因为所有人都标着原创),所以就不贴出处了,代码看起来感觉很懵,但是其实可以直接复制粘贴使用,只限pc端。using System.Collections;using System.C...

2019-02-21 11:31:39 2645 2

crifilesystem.rar

生成cpk格式视频文件

2021-05-24

AmplifyShader.unitypackage

Ase 1.64 版本,含例子

2020-12-30

空空如也

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

TA关注的人

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