游戏开发踩坑记录
文章平均质量分 68
记录下来游戏开发中踩坑经验,包含Unity开发、iOS、Android、PS4、Switch、Xbox主机开发移植经验等等
鱼蛋-Felix
代码创造科技,科技改变世界!
微博@我是鱼蛋啊你不记得我了么
Q群:904994482
有问题加群聊
展开
-
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 · 830 阅读 · 2 评论 -
Unity地形关联出错的解决办法以及地形深度拷贝
我们发现,强制拖过去会有一个警告,意思大概是地形数据和该地形的collider数据不匹配。最近发现unity地形系统的一个bug,导入的场景地形数据关联错乱了,关联到别的场景的地形数据了,meta替换了也没用,不清楚它具体是怎么关联的。可以看到正常这个场景的地形数据应该关联的是Scene_Empty_Terrain的数据,但是现在它关联到别的了。其实使用上面的方式已经可以解决了,第二种是想推荐下下面的地形拷贝类,本鱼蛋自己也做个备份,方便后续使用。那我们强制把正确的地形数据拖过去行不行,我们试下!原创 2024-04-19 11:11:18 · 808 阅读 · 1 评论 -
frp内网穿透,让外网可以访问内网
frp 是一个开源的内网穿透工具,当然也可以用nat123。GitHub链接:frp可以将本地局域网的机器暴露到公网,只要有网络就可以访问。支持 TCP、UDP、HTTP、HTTPS,不仅仅限于本地web服务器可以暴露,整台机器都可以暴露,windows的远程控制,mac和linux的ssh都可以被暴露。原创 2024-04-02 14:41:26 · 913 阅读 · 0 评论 -
如何不依赖Unity直接解压unitypackage的内容
我们都知道unity的资源导出是导出成.unitypackage文件,如果要里面的内容,得打开Unity,将unitypackage导入进去才能看到里面的内容。当然可以,为此我做了一个工具,可以不需要unity直接将unitypackage解压出来,这里我介绍下他的用法,后续我会把工具包上传上来。通过上面的主要代码,我们可以看到其实unitypackage就是一个简单的压缩包,解压出来的文件如下图所示,像乱码一样,文件也不明文。随便找个目录看下,找到pathname。如果需要免费下载该资源包,请加群获取。原创 2024-03-12 14:12:26 · 2186 阅读 · 3 评论 -
Unity使用UnityWebRequest读取音频长度不对的解决方法
在开发的过程中碰到这样一个问题,有的音频文件通过UnityWebRequest读取出来后,AudioClip的Length会不对,比如本身有7秒,读出来只有3秒。知道了区别,我们就知道怎么解决了,对于读出来不对的音频,我们可以通过音频软件转换下,将码率换为正确的48kbps以上,采样数24000Hz以上,即可解决问题。比如这个文件,我们通过windows查看时长有6秒,然后我们通过代码输出,发现只有4.032秒,这样会导致我们代码后面的逻辑有了问题。首先我找了个读出来正常长度的音频,我们进行了对比。原创 2024-03-05 14:26:44 · 1215 阅读 · 0 评论 -
Unity应用在车机上启动有概率黑屏的解决方案
在PlayerSetting里将Android下的Resizable Window取消勾选,注意是不要勾选在AndroidManifest.xml里将主Activity的android:resizeableActivity设置为true这样可能能解决你们的问题。原创 2024-01-26 10:39:03 · 886 阅读 · 0 评论 -
谷歌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 · 3594 阅读 · 1 评论 -
系统语言德语时浮点数转化问题
因为C#是面向全球性的应用语言,不同国家有不同的文化,借助CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug。但是在德国,表示小数则是用 逗号,即 0,123。知道了原理,那么就大概知道怎么解决了。原创 2024-01-12 15:55:03 · 742 阅读 · 0 评论 -
Unity UGUI图片锯齿严重怎么解决
在开发的时候,发现图片锯齿严重,打包到移动端或者在编辑器都这样,如下图。原创 2023-11-24 12:51:19 · 3644 阅读 · 0 评论 -
各种知名游戏的技术分析
介绍一个GitHub,里面包括了市面上的各种游戏的技术分析,包括渲染管线、工作流、技术文章等等,在做某个类型的游戏的时候,可以针对某个游戏去进行技术参考,特别实用。里面有赛博朋克2077,死亡搁浅,GTA等等,有需要的可以看。原创 2023-07-26 13:44:14 · 445 阅读 · 0 评论 -
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 · 7708 阅读 · 10 评论 -
UGUI Text中文符号句首句尾问题
经常在游戏开发中碰到中文符号在句首或句尾导致显示不正常的问题,而TextMeshPro就没有这些问题因为TMP支持配置,那对于项目中没法使用TMP的情况,而用的UGUI的Text的情况,怎么办呢?比如下图:双引号单独在句尾了,这样显示特别不美观,而版署那边又要求修改。还有这种,句号在句首了,也没奇怪。百度谷歌也没找到合适的方案,或找到的方案有瑕疵,因此特地写了一个类,专门解决这种情况,支持配置避免行尾出现的符号、避免行首出现的符号等等,可直接拿去使用。代码如下:using...原创 2022-05-19 10:08:15 · 910 阅读 · 4 评论 -
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 · 3434 阅读 · 0 评论 -
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 · 6250 阅读 · 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 · 3607 阅读 · 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 · 13312 阅读 · 11 评论 -
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 · 30526 阅读 · 13 评论 -
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 · 1312 阅读 · 2 评论 -
Unity接入GooglePlay内购V4 V5 V6(源生Android方式)
Unity接GooglePlay In-App Billing坑还是蛮多的,各种坑。接的方式目前来看有三种:采用Unity IAP插件,开启Unity的IAP Service 采用Android源生接入,在Android Studio接入,然后打包出jar或aar放到Unity项目,使用Unity调用 打包出Android工程,在Android工程中接入这次介绍的是第二种,使用安卓源生方式接入,因为该方式一劳永逸,新项目可以很快就完成接入。为什么不用第一种呢?直接导入IAP插件,然后设置参原创 2021-06-10 17:52:03 · 6606 阅读 · 29 评论 -
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 · 9651 阅读 · 7 评论 -
Unity发布Android App Bundle详解(三)快速转换Addressables
概述对于项目本身就使用AssetBundle的来说,打包新格式aab是很容易的,上篇文章已经详细说过了。对于项目之初没有考虑AssetBundle热更新的项目怎么办呢?项目都是采用Resources加载,并且是同步加载的,unity场景资源也较多,没有做好分包设计的怎么办呢?这篇文章我们讲怎么处理。难点场景采用同步/异步加载 SceneManager.LoadScene ("xx",LoadSceneMode.Single); 资源采用Resources.Load加载原创 2021-07-12 18:02:46 · 5732 阅读 · 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 · 9677 阅读 · 12 评论 -
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 · 7902 阅读 · 10 评论 -
Unity打开淘宝app并跳转到商品页面
最近碰到个需求,是希望在Unity有一个按钮,打开后直接跳转淘宝app,打开商品页面。百度了下没有相关的文章,于是我在此分享下。之前开发游戏的时候就希望引导玩家到应用商店更新游戏,之前采用的方式也是Unity的Application.OpenURL接口,该接口不仅可以跳转到浏览器,还可以跳转到应用并传参数。打开安卓应用商店,?id=xxx(xxx就是你apk的包名)Application.OpenURL("market://details?id=com.egogame.picoadventure原创 2021-07-05 18:05:26 · 1356 阅读 · 3 评论 -
Unity发布aab(Android App Bundle)详解(一)Unity .aab支持情况
从2021.8月开始,谷歌开始禁止新应用使用apk+obb的方式提交应用了,而强制改用新格式.aab。本来想着不用就不用吧,.aab格式应该对Unity很容易吧,查了资料,发现只要在Build Settings勾选Build App Bundle(Google Play)选项即可,如图:勾选后打包,发现确实打出了.aab格式的文件了。但是生活总是开玩笑,发现事情往往没有这么简单。上传到GooglePlay后台后,系统提示“您的App Bundle包含的以下配置会使应用的初始安装大小超过150 M原创 2021-06-30 14:45:30 · 17897 阅读 · 9 评论 -
GooglePlay内购接入错误Google Play In-app Billing API version is less than 3
报错提示:Google Play In-app Billing API version is less than 3原创 2021-06-11 11:06:04 · 4235 阅读 · 2 评论 -
TextMeshPro打包后闪退报错UnityEngine.TextCore.LowLevel.FontEngine:TryAddGlyphToTexture_Internal
今天打包安卓apk后运行总是闪退,死活找不到原因是什么,后来看了下log2021-04-28 11:25:33.725 2571-2635/? W/System: Ignoring header Cookie because its value was null.2021-04-28 11:25:38.178 3898-3915/? E/CRASH: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 000000082021-04-28 1原创 2021-04-28 13:04:24 · 2950 阅读 · 0 评论 -
Unity事件中心Event Center
事件中心支持的用法 简单发送事件: EgoEventCenter.PostEvent("Test"); 发送string类型事件: EgoEventCenter.PostEvent<string>("Test","data"); 发送多个参数事件: EgoEventCenter.PostEvent<int, float>("Test", 1, 2f); 监听事件: EgoEventCenter.AddListener("Test",OnTes..原创 2020-07-15 13:36:44 · 2898 阅读 · 2 评论 -
unity导入工程报错Unity Package Manager Error
Unity改成Package Manager虽然理念很好,但是总是碰到各种奇葩问题,比如导入工程时,处理Package的时候各种提示报错,导致工程无法正常打开...点continue就闪退了。Unity Package Manager Error报错信息:Unable to connect "https://packages.unity.cn"看来是unity中国的问题。查了资料解决方案如下:加环境变量,直接在cmd下用命令行添加(注意用管理员方式打开),命令如下:setx UNITY_NO原创 2020-07-07 10:35:30 · 5976 阅读 · 0 评论 -
Unity安卓视频兼容性探讨
在Unity中使用了一段视频,然后使用了VideoPlayer组件进行播放,以下是碰到的一些问题。兼容性问题:Video在很多的设备中视频无法播放,如华为畅享8(安卓8.0)等等,刚开始以为是因为Android系统版本太低不兼容,后来发现Android9的也出现,这就不对了...于是看了logcat输出的log,发现都有这么一条AndroidVideoMedia的log。04...原创 2020-04-09 17:25:33 · 5220 阅读 · 6 评论 -
Unity安卓适配刘海屏(Notch Screen)
程序员真的命苦,各个安卓厂商搞了什么刘海屏,全面屏,真是苦了程序员,以下是适配过程。未适配刘海屏的应用截图:(左边有黑边,目前小米和华为都是这么处理,也就是将应用右移或左移)而本次教程的目标就是去除左边的黑边。针对Android 8.0(Android O)在谷歌的Android P(Android 9.0)推出之前,各个厂商已经开始了刘海屏的应用,所以对于Android 8....原创 2020-04-09 16:49:12 · 3941 阅读 · 0 评论 -
【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程
SpriteAtlas是Unity新出的一个功能,用来取代旧版的Sprite Packer。图集打包的意义:减少DrawCall 图集将图片打包为2的幂次方的素材大小,可以提升性能 减小包体大小Sprite Packer(旧版本)缺点:...原创 2020-03-06 15:40:04 · 37927 阅读 · 6 评论 -
NGUI预制在Unity新的预制系统无法编辑
旧项目本来使用Unity5.6+NGUI开发的,因为GooglePlay需要支持64位,想着直接升级到2018.4,发现NGUI预制无法编辑,打开就会报错:Error: The root GameObject of the opened Prefab has been moved out of the Prefab Stage scene by a script.当然也可以升级NGUI到最新版但是...原创 2020-02-27 16:58:27 · 3698 阅读 · 4 评论 -
Unity发布版读取中文乱码
今天使用Unity读取网页数据的时候,有时候是好的,有时候显示乱码。var request = UnityWebRequest.Get(url);// Wait for the response and then get our datayield return request.Send();var data = request.downloadHandler.text;后来发现...原创 2020-02-23 13:13:12 · 1185 阅读 · 0 评论 -
安卓应用在Android8.0莫名闪退
Unity接了华为sdk,评论一片骂说打开闪退,一直重现不出来,后来发现是8.0的系统才会。原因是Activity为Translucent半透明模式导致的,都是谷歌大佬的锅,8.0为了支持全面屏搞出来的bug,8.1已经修复,但是无奈玩家不更新也没办法啊。后来使用该方法解决了,直接看这个帖子吧。https://blog.csdn.net/starry_eve/article/detai...原创 2019-10-29 17:52:58 · 384 阅读 · 0 评论 -
Unity Mac播放视频VideoClip黑屏失败
在Windows打包Mac应用,然后将应用放到Mac上运行,发现视频(MP4格式)播放不了,黑屏也没有声音。查了下资料,发现需要将视频进行转码,Unity就带有转码的选项。如下图,未转码时会提示可能不能在所有平台兼容。将Transcode选上,Apply等待进度条,再打包Mac就可以显示了。参考论坛链接:https://forum.unity.com/threads/unity-5...原创 2019-10-28 18:52:08 · 1119 阅读 · 0 评论 -
Unity AudioSource.PlayOneShot切换场景时不播放
问题描述:Unity通过Resources.Load<AudioClip>("音效"),然后切换场景,在场景的Start中使用AudioSource.PlayOneShot播放音效,会发现音效被会被中断。后来测试了下发现,应该是因为Resources.Load加载播放后,因为切换场景导致的GC,而因为没有引用所以AudioClip被回收了。。解决方法:在类里面创建Aud...原创 2019-08-14 15:14:26 · 3450 阅读 · 0 评论 -
unity读取csv因为BOM文件头导致的坑
最近做csv读取的时候遇到一个特别坑的事情,就是两个csv文件用txt打开以及比对工具比对都是一模一样,但是一个却解析不到,一个却能解析到。如下图,这是比对截图。如上图,左边文件通过Get("1001")是取不到数据的,而右边的文件却可以。而且从肉眼看都是完全没有问题的。再仔细来看看其他信息:●通过unity读取TextAsset的byte[],发现只有146个byte●通...原创 2019-05-09 17:54:11 · 827 阅读 · 0 评论 -
Unity使用JsonNet在ios上报错Default constructor not found
最近在项目中使用Json读取存储数据,本来想用Unity自带的JsonUtility的,但是无奈Unity自带的Json解析功能太少,比如不支持Dictionary等等。后来使用了另外一个JsonNet插件,比Unity好用很多很多,也很方便,性能也不错。Newtonsoft.JsonNet大家可以自己到Github下载,提供了dll和源代码。GitHub地址:https://github.c...原创 2019-03-27 11:34:31 · 2277 阅读 · 0 评论 -
Unity Spine碰撞框形状无法跟随改变
最近使用Spine的时候,Spine在动画编辑中修改了碰撞框形状,导入到unity中使用BoundingBoxFollower脚本,发现在Spine碰撞框形状修改的时候,不会自动跟随更新。后来到Spine官方论坛查到资料才发现:大概意思就是Unity的PolygonCollider2D设计初衷不支持动态改变形状,如果改变的话将会耗费大量的计算和意想不到的错误。如果非要修改的话,...原创 2019-01-21 12:04:39 · 2169 阅读 · 0 评论
分享