自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鱼蛋的开发小站

代码创造科技,科技改变世界

  • 博客(178)
  • 资源 (6)
  • 收藏
  • 关注

原创 Unity自定义shader打包SpriteAtlas图集问题

原因就是打包图集后传入给shader的uv变了,本来只有图片的时候,uv就是0-1的本地uv值,现在素材换成一张更大的图了,导致uv采样就出现了问题。今天碰到的问题是,shader绘制的时候,因为打包图集后,MainTexture是图集的图片,所以shader渲染就错误了。打包完图集后,发现这个MainTexture是整个图集的图片。将图片本身的uv信息传给shader,做一个计算转换即可。非图集是这样显示的,正常的一个地块。导致显示就错乱了,如下图。正常的显示是这样的。

2025-05-20 16:10:55 553 2

原创 Unity InputSystem触摸屏问题

说下背景,我是用的InputSystem系统,不是用的老的Input系统,老的Input系统没问题。用的InputSystem版本是1.7.0。这个一体机是这样的,一个电脑机箱,外接一个可以触摸的显示屏,然后UGUI的按钮就间歇性点不了了,就是一会可以点,一会不能点,要点好几下。最后升级到InputSystem最新版本,1.14.0就没问题了,经过测试,1.11的版本就没问题了。所以猜测是新系统InputSystem的问题,查看了更新日志,确实修复了一些touch相关的。

2025-04-24 18:32:52 376

原创 CSV文件读取文件表头字符串含ZWNBSP(零宽度空白字符)

在导入csv数据格式文件时,发现读取的key存在,但是读取不到值。csv数据格式如下:1001,localization_CN,简体中文1002,localization_CN,英语打断点调试发现字典了确实有key为id的值,但是读取返回的就是空字符串。

2025-04-09 11:18:25 552

原创 Unity ML-Agents系列教程(一)环境安装

如果你刚接触肯定对各种都很陌生,首先Conda是什么,Conda 是一个开源的软件包管理系统和环境管理系统,通过Conda可以很方便的创建虚拟环境,在各个虚拟环境中切换,不会导致相互环境冲突。下图就是各种虚拟环境。其中,Project就是Unity的工程,我们用Unity打开即可,官方提供了很多示例,我们直接运行也可以,但是直接运行是用训练好的模型跑的,我们后面再来说下怎么自己训练模型。最近人工智能有点火,各种机器人、大模型等,所以也学习下Unity下的人工智能,看看Unity怎么机器学习的。

2025-03-21 19:00:36 1347

原创 Unity WebGL包体压缩

最近在开发webgl,踩了很多坑,先来说下包体的问题。开发完之后发现unity将文件都合并到一个文件了,一共有接近100m。这对网页端的体验来说是可怕的,因为玩家必须要加载完所有的文件才能进入,这样体验特别差。于是想着有什么可以压缩首包大小,经过下面的尝试。

2025-02-10 18:54:40 1276 1

原创 Rider编辑器怎么搜索中文文本

Rider中按Ctrl+Alt+F唤出搜索界面,然后输入正则"[\u4e00-\u9fa5]+"即可查找所有中文字符串。在开发游戏中,有时候贪省事,所以直接把提示文本写在代码里,但是要多语言的时候就比较难找,可以通过以下方式解决。这样可以很方便的找出来了。正则可以自己定义,或者问ai。

2025-01-17 12:47:22 261

原创 Webgl缓存问题Failed to load ‘xxx/Build/public.data‘ Could not connect to cache: Cache API is not support

发现是要在模板的index.html里的config配置中增加cacheControl的配置,加上就好了。

2025-01-17 10:32:11 413

原创 AsyncOperation.allowSceneActivation导致异步加载卡死

先看这段代码,有个诡异的问题,不确定是不是bug我先加载了关卡,但是加载完毕不跳转,所以用asyncOperation.allowSceneActivation = false;进行不跳转,然后再次加载一个Resource下的资源,用异步Resources.LoadAsync的方式,一直发现进度为0没有更新,等了好久也是一样,而同样的代码在别的地方是好的。而且如果使用Resources.Load是能直接加载成功的。

2025-01-11 19:37:11 514

原创 webgl urp支持情况

上面的是360浏览器,后来用Google Chrome浏览器却没问题,查了下资料。发现人家urp是没问题的,所以合理怀疑是360浏览器的兼容性问题。将游戏导出webgl,放到浏览器发现黑屏并有一堆警告。因为游戏用了urp,所以不确定是不是urp的兼容有问题。

2025-01-03 10:56:15 253

原创 NavMeshAgent直接transform.position移动报错

需要使用如下方法进行移动位置,先不激活,移动完毕再激活。

2024-12-23 18:12:47 188

原创 解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

我们看一下我们是怎么操作编辑一套流程的,可以看到这是一个门,然后我们编辑一个游戏 ID 和分镜 ID,然后这里面拖一个触发器预制,这是控制动画切换的触发器,我们设计好它的动画名字这时候监听门打开之后的动态,然后切到门常开的动画,然后我们直接运行,运行之后通过解锁游戏 ID,我们就通过这个游戏 ID 解锁快速测试到了这个表现,很方便地去编辑,方便地去测试。有了这个游戏 ID,我们可以统一地根据这个游戏 ID 判断做一些操作,比如说会监听游戏 ID 更新,改变物体的显示隐藏,包括动画的切换。

2024-12-06 15:25:12 1169

原创 XR和Steam VR项目合并问题

而SteamVR是OpenVR Loader,而XR是OpenXR,因为OpenVR Loader在前,所以激活的是OpenVR Loader,这也是为什么SteamVR场景可以运行而XR场景不行。事情变的有趣起来,我们知道了这样的原理之后,那鱼蛋我就想着尝试下,在Runtime里动态切换行吧,SteamVR场景切换到OpenVR Loader,而XR场景切换到OpenXR,代码如下。最后的结果就是,没法实现动态切换XR或VR,如果看到此处的人,有办法请告诉我,我尝试了两天用了各种办法,都没法做到。

2024-06-07 11:48:24 1064 2

原创 Unity地形关联出错的解决办法以及地形深度拷贝

我们发现,强制拖过去会有一个警告,意思大概是地形数据和该地形的collider数据不匹配。最近发现unity地形系统的一个bug,导入的场景地形数据关联错乱了,关联到别的场景的地形数据了,meta替换了也没用,不清楚它具体是怎么关联的。可以看到正常这个场景的地形数据应该关联的是Scene_Empty_Terrain的数据,但是现在它关联到别的了。其实使用上面的方式已经可以解决了,第二种是想推荐下下面的地形拷贝类,本鱼蛋自己也做个备份,方便后续使用。那我们强制把正确的地形数据拖过去行不行,我们试下!

2024-04-19 11:11:18 1127 1

原创 frp内网穿透,让外网可以访问内网

frp 是一个开源的内网穿透工具,当然也可以用nat123。GitHub链接:frp可以将本地局域网的机器暴露到公网,只要有网络就可以访问。支持 TCP、UDP、HTTP、HTTPS,不仅仅限于本地web服务器可以暴露,整台机器都可以暴露,windows的远程控制,mac和linux的ssh都可以被暴露。

2024-04-02 14:41:26 1041

原创 如何不依赖Unity直接解压unitypackage的内容

我们都知道unity的资源导出是导出成.unitypackage文件,如果要里面的内容,得打开Unity,将unitypackage导入进去才能看到里面的内容。当然可以,为此我做了一个工具,可以不需要unity直接将unitypackage解压出来,这里我介绍下他的用法,后续我会把工具包上传上来。通过上面的主要代码,我们可以看到其实unitypackage就是一个简单的压缩包,解压出来的文件如下图所示,像乱码一样,文件也不明文。随便找个目录看下,找到pathname。如果需要免费下载该资源包,请加群获取。

2024-03-12 14:12:26 3597 3

原创 Unity使用UnityWebRequest读取音频长度不对的解决方法

在开发的过程中碰到这样一个问题,有的音频文件通过UnityWebRequest读取出来后,AudioClip的Length会不对,比如本身有7秒,读出来只有3秒。知道了区别,我们就知道怎么解决了,对于读出来不对的音频,我们可以通过音频软件转换下,将码率换为正确的48kbps以上,采样数24000Hz以上,即可解决问题。比如这个文件,我们通过windows查看时长有6秒,然后我们通过代码输出,发现只有4.032秒,这样会导致我们代码后面的逻辑有了问题。首先我找了个读出来正常长度的音频,我们进行了对比。

2024-03-05 14:26:44 1402

原创 Unity应用在车机上启动有概率黑屏的解决方案

在PlayerSetting里将Android下的Resizable Window取消勾选,注意是不要勾选在AndroidManifest.xml里将主Activity的android:resizeableActivity设置为true这样可能能解决你们的问题。

2024-01-26 10:39:03 1090

原创 谷歌aab包在Android 14闪退而apk没问题(targetsdk 34)

翻译过来就是,Goole I/O 2023讨论的,使用RECEIVER_EXPORTED / RECEIVER_NOT_EXPORTED标志注册接收者是Android 13的一部分,现在是运行在Android 14或更高版本(U+)上的应用程序的要求。Unity应用上线到GooglePlay,有用户反馈fold5设备上(Android14系统)疯狂闪退,经测试,在小米手机Android14系统的版本复现成功了,奇怪的是apk直接安装没问题,而打包成aab就是疯狂闪退。

2024-01-12 16:31:20 4209 2

原创 系统语言德语时浮点数转化问题

因为C#是面向全球性的应用语言,不同国家有不同的文化,借助CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug。但是在德国,表示小数则是用 逗号,即 0,123。知道了原理,那么就大概知道怎么解决了。

2024-01-12 15:55:03 815

原创 Unity UGUI图片锯齿严重怎么解决

在开发的时候,发现图片锯齿严重,打包到移动端或者在编辑器都这样,如下图。

2023-11-24 12:51:19 5177

原创 各种知名游戏的技术分析

介绍一个GitHub,里面包括了市面上的各种游戏的技术分析,包括渲染管线、工作流、技术文章等等,在做某个类型的游戏的时候,可以针对某个游戏去进行技术参考,特别实用。里面有赛博朋克2077,死亡搁浅,GTA等等,有需要的可以看。

2023-07-26 13:44:14 503

原创 Unity如何快速接入iOS和GooglePlay的成就排行榜等GameCenter功能

一般在游戏开发中,经常有成就排行榜的需求,按照我们的理解,通常是要自己导入谷歌的sdk,或者苹果的sdk,然后封装后通过桥接来调用。其实不用这么复杂,Unity已经帮我们封装好了,直接调用接口。我们可以通过以下方式进行调用,Unity会自动帮我们根据平台进行调用,大大减少了我们的开发效率。目前所有相关的功能都在Social类中。

2023-07-25 18:54:28 2252

原创 AndroidStudio打包AAR供Unity使用流程

最近很多人私信我问如何打包aar的事,因为Android源生开发知识量比较多,如果从头学起就要花很长时间,本篇幅着重来跟大家说说怎么快速打包aar供Unity使用。为什么要打包aar,原因是从新版本2021.2已经不允许直接把res文件放在Plugins/Android目录下了,jar和AndroidManfiest不影响,主要是res目录。这将影响的是,一些旧版本的sdk提供的还是jar+res的方式,需要升级,如果sdk没有提供升级版本的话,那将受到蛮大的影响。那么针对这种情况,我们自己说说如何解决。首

2022-07-07 11:36:46 8484 10

原创 Unity隐藏目录和隐藏文件

在开发的时候,有时候想在项目Assets下放东西但是又不想Unity识别到,可以采用下面的方式,下面我们看官方介绍:Unity - Manual: Special folder names隐藏资源在导入过程中,Unity忽略Assets文件夹(或其中的子文件夹)中的以下文件和文件夹:隐藏的文件夹。 以' . '开头的文件和文件夹。 以“~”结尾的文件和文件夹。 命名为cvs的文件和文件夹。 扩展名为.tmp的文件。效果如下:...

2022-05-24 11:54:55 2319

原创 UGUI Text中文符号句首句尾问题

经常在游戏开发中碰到中文符号在句首或句尾导致显示不正常的问题,而TextMeshPro就没有这些问题因为TMP支持配置,那对于项目中没法使用TMP的情况,而用的UGUI的Text的情况,怎么办呢?比如下图:双引号单独在句尾了,这样显示特别不美观,而版署那边又要求修改。还有这种,句号在句首了,也没奇怪。百度谷歌也没找到合适的方案,或找到的方案有瑕疵,因此特地写了一个类,专门解决这种情况,支持配置避免行尾出现的符号、避免行首出现的符号等等,可直接拿去使用。代码如下:using...

2022-05-19 10:08:15 1059 4

原创 Android开发之如何与蓝牙设备相互通信

最近研究了下怎么在Android应用上连接蓝牙设备,就比如安卓应用是怎么与手环进行连接的呢,怎么做到在应用点击按钮,修改手环的设置呢?总体开发流程大概是:搜索蓝牙设备列表 选择蓝牙地址进行连接,等待连接成功 搜索蓝牙设备的Services列表 搜索某个Service的Characteristics 订阅Characteristics 接收消息/写入消息至于如何开发,需要有一定的源生Android开发基础。如何在Unity中接入呢,本质也是类似,就是通过Android Studio输出aa

2022-05-08 10:29:37 871 1

原创 C#如何在Windows上接入蓝牙设备

最近研究了下怎么在windows上连接蓝牙设备,并获取蓝牙设备的消息以及如何向蓝牙设备写入消息。该方法同样适用于Unity引擎。本质上还是获取windows的底层API接口进行调用,连接蓝牙设备的流程大概是:搜索蓝牙设备列表,并获取蓝牙设备的属性,其中有属性值有isConnectable、name等等 选择蓝牙地址进行连接,等待连接成功 搜索蓝牙设备的Services列表 搜索某个Service的Characteristics 订阅Characteristics 接收消息/写入消息至于如

2022-05-08 10:21:50 3267 6

原创 Unity打包后处理修改AndroidManifest.xml原因开发Quest2蓝牙权限自动被移除

在开发Quest2应用的时候需要用到蓝牙权限,但是一直报错AndroidJavaException: java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10076 nor current process has android.permission.BLUETOOTH.01-24 20:40:47.280 26380 26405 E Unity : AndroidJavaException: java.lang

2022-04-29 22:52:20 3520

原创 Unity NavMesh导航报错“SetDestination“ can only be called on an active agent that has been placed on a Na

在使用NavMeshAgent进行导航的时候,发现调用SetDestination一直报错,报错显示是:"SetDestination" can only be called on an active agent that has been placed on a NavMesh.UnityEngine.AI.NavMeshAgent:SetDestination(Vector3)但是查看地图,发现Bake过了,Agent也在地图上啊,照理说会自动关联到NavMesh地图上的。后来发现是因为N

2022-04-24 16:29:55 6679 1

原创 Unity Slider显示NaN

Slider设置value的时候发现显示不出来,但是数据是对的。但是发现里面的一些对象坐标变成了NaN,很是奇怪啊。遇事先Google,果然世界之大,总有碰到的。UnityでSliderのRectTransformにNanが入ってしまうときの確認箇所 - ArceLife(アルセライフ)我们看看代码:float sliderValue = (float) (videoPlayer.time / videoPlayer.length);timeSlider.SetValueW.

2022-04-12 18:52:22 3752 2

原创 Unity打包报错OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please

将项目从2021.1升级到2021.2的时候,收到一些错误,解决后打包Android包,之前没问题的突然报错了:OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please move your resources to an AAR or an Android Library. See "AAR plug-ins and Android Libraries" section of th

2022-03-13 11:36:45 14079 11

原创 Unity免费库/插件/工具类/扩展集合

推荐一个GitHub关于Unity库/插件/工具类/扩展的集合,都是免费的,里面包含各种各样实用的工具,比如对象池、八叉树、回放系统、粒子、寻路、Debug工具、VR、网络库、物理、AI、Input控制器等等等等,应有尽有。链接:https://github.com/michidk/Unity-Script-Collection我尝试做下翻译:GameObjects & TransformsRecyclerKit- 对象池系统. UnityOctree- Unity八叉树实..

2022-01-06 14:48:00 11818 3

原创 Unity打包报错A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFa

Unity安卓打包报错:A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade

2021-12-05 10:45:52 32547 22

原创 一键反编译Android包教程

某些时候我们想修改apk包内容,比如汉化某个游戏,这时候就需要修改游戏apk的包内容,并重新签名成安卓手机识别的apk文件,下面详细介绍,文章末尾有一键修改工具。确保java环境

2021-10-29 16:43:57 2674 2

原创 Unity打包代码修改gradle.properties或AndroidManifest文件

Unity通过Gradle打包方式会自动生成对应的gradle相关文件,再进行打包,虽然编辑器可以设置一部分参数,但是因为Unity版本不同,参数支持可能不够。以Unity2018.4.17为例仅支持设置部分路径,如需设置gradle版本,并没有地方设置。对于这种情况,其实Unity可以通过IPostGenerateGradleAndroidProject进行设置,不需要升级Unity版本。比如我们可以这样修改打包后的gradle.properties文件,打包完后修改部分参数,..

2021-09-10 12:14:38 5698

原创 Unity调用jar报错Failed resolution of: Lcom/xxx/R$layout

想实现在Android这边写了UI,是继承Dialog的窗口,想通过Unity调用jar弹出该Dialog窗口,进行一些操作,发现弹出时会报错:Failed resolution of: Lcom/xxx/R$layout。根据logcat的报错提示,找到发现是访问R.layout和R.id报了错。Android代码如下:setContentView(R.layout.devices_dialog);findViewById(R.id.lvBluetoothDevices);这错误关键字太难

2021-07-23 11:45:17 1413 2

原创 Unity发布Android App Bundle详解(四)Addressables+Play Asset Delivery分发

在之前文章我们了解到了:Unity aab要我们自己处理,Unity目前没有提供完整的解决方案帮我们自动处理(截止2021.7.16号) 2021.8.1号开始谷歌对新应用只能接受aab格式,而aab的本体包限制在150M aab格式超过150M的应用要自行通过Play Asset Delivery分发 Unity应用需要通过AssetBundle进行包体拆分,然后通过GooglePlay提供的Play Asset Delivery分发那前面的工作我们都准备完毕了,现在我们开始进行aab的打包,

2021-07-16 12:02:30 10388 9

原创 Unity发布Android App Bundle详解(三)快速转换Addressables

概述对于项目本身就使用AssetBundle的来说,打包新格式aab是很容易的,上篇文章已经详细说过了。对于项目之初没有考虑AssetBundle热更新的项目怎么办呢?项目都是采用Resources加载,并且是同步加载的,unity场景资源也较多,没有做好分包设计的怎么办呢?这篇文章我们讲怎么处理。难点场景采用同步/异步加载 SceneManager.LoadScene ("xx",LoadSceneMode.Single); 资源采用Resources.Load加载

2021-07-12 18:02:46 6156 10

原创 AndroidStudio工程打包aab文件

之前的文章说过,Unity可以直接导出aab文件的,用法也很简单,就是Build Settings勾选Build App Bundle(Google Play)选项。而如果是想通过Unity Export Project导出Gradle工程,可以使用下面的方式打包aab文件。Android Studio打包AAB文件1、打开Android Studio工程,打开Build-Generate Singned Bundle/APK...选项注意:该选项上面的Build Bundles(s).

2021-07-12 12:29:11 10324 11

原创 Unity发布Android App Bundle详解(二)Play Asset Delivery介绍

Play Asset Delivery是什么?Play Asset Delivery (PAD) 将 app bundle 的优势带到游戏中。它允许超过 150 MB 的游戏替换旧版扩展文件 (OBB),方法是将包含游戏所需的所有资源的单个工件发布到 Play。PAD 提供了灵活的分发模式、自动更新、压缩和增量修补功能,并且可免费使用。使用 PAD,所有资源包均在 Google Play 上托管和提供,因此您无需使用内容分发网络 (CDN) 向玩家提供游戏资源。Play Asset Delivery

2021-07-08 12:30:30 8811 10

PadDemo-Unity.zip

谷歌2021.8.1开始强制使用PAD分发,该资源为谷歌PAD(Play Asset Delivery)的Unity示例工程,使用Addressables+PAD进行分发GooglePlay应用。请结合文章配合使用:https://blog.csdn.net/egostudio/article/details/118360117

2021-09-17

傻瓜式解压unitypackage,不依赖Unity和Python,支持批量解压unitypackage包

很多时候我们下了几十个unitypackage资源包,又不清楚好不好用,而且导入之后编译特别慢,unity又不提供批量解压的功能,所以这时候就想能不能提前解压呢。 当然可以,为此我做了一个工具,可以不需要unity直接将unitypackage解压出来。 使用说明: *单个解压:适用于只解压一个unitypackage的情况 *批量解压:适用于解压文件夹下包括子目录下的所有unitypackage文件 该工具完全采用傻瓜式使用方法,双击直接操作成功。 使用说明请查看该文章详细讲解:https://blog.csdn.net/egostudio/article/details/136650332

2024-03-12

APK一键反编译签名工具,支持新版安卓v2签名

工具已整合,加bat一键反编译,一键打包,一键签名,支持v2签名,支持使用keystore和pk8签名,想要修改安卓包内容的话非常有用,请结合教程文章查看https://blog.csdn.net/egostudio/article/details/121038001 反编译 1、将apk复制到当前目录下,改名为file.apk 2、双击执行1反编译.bat 3、执行完毕后输出目录为dis/output,修改里面的内容即可 打包 1、修改内容后,双击执行2重新打包.bat 2、等待执行完毕,输出目录dis/files/output.apk 3、当前apk是未签名版本,无法直接使用,请看签名部分 对齐 1、对于新版安卓系统,需要对齐操作,所以执行下对齐,等待提示“success”即可 2、执行完毕后,打开目录dis/files/output-aligned.apk,即可看到对齐后的文件 签名 Keystore名字:“debug.keysotre” Keystore密码:“android” Key别名:“androiddebugkey” .....字数有限,请查看文章观看详细

2021-10-30

EgoGooglePlay.rar

Unity接入GooglePlay内购V4安卓源码,如何使用,请参照文章https://blog.csdn.net/egostudio/article/details/117784970

2021-07-25

JsonNet.zip

该插件用Unity Package即可下载到,如果你找不到地方,可以下载这个。 比Unity自带的JsonUtility更加强大的Json序列化工具,附带源码和dll。 使用教程在此https://blog.csdn.net/egostudio/article/details/107230021

2020-07-09

svn服务器软件-CollabNetSubversionEdge-5.1.0_setup-x86_64

CollabNetSubversionEdge是一款集成了svn服务器所需要的软件,一键安装即可部署好svn服务器,使用教程看https://blog.csdn.net/egostudio/article/details/46892461

2018-05-20

unity3d chm手册

unity3d chm手册,中文版的离线文档

2015-09-17

空空如也

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

TA关注的人

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