unity3d
文章平均质量分 68
鱼蛋-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 · 829 阅读 · 2 评论 -
Unity地形关联出错的解决办法以及地形深度拷贝
我们发现,强制拖过去会有一个警告,意思大概是地形数据和该地形的collider数据不匹配。最近发现unity地形系统的一个bug,导入的场景地形数据关联错乱了,关联到别的场景的地形数据了,meta替换了也没用,不清楚它具体是怎么关联的。可以看到正常这个场景的地形数据应该关联的是Scene_Empty_Terrain的数据,但是现在它关联到别的了。其实使用上面的方式已经可以解决了,第二种是想推荐下下面的地形拷贝类,本鱼蛋自己也做个备份,方便后续使用。那我们强制把正确的地形数据拖过去行不行,我们试下!原创 2024-04-19 11:11:18 · 806 阅读 · 1 评论 -
如何不依赖Unity直接解压unitypackage的内容
我们都知道unity的资源导出是导出成.unitypackage文件,如果要里面的内容,得打开Unity,将unitypackage导入进去才能看到里面的内容。当然可以,为此我做了一个工具,可以不需要unity直接将unitypackage解压出来,这里我介绍下他的用法,后续我会把工具包上传上来。通过上面的主要代码,我们可以看到其实unitypackage就是一个简单的压缩包,解压出来的文件如下图所示,像乱码一样,文件也不明文。随便找个目录看下,找到pathname。如果需要免费下载该资源包,请加群获取。原创 2024-03-12 14:12:26 · 2183 阅读 · 3 评论 -
Unity使用UnityWebRequest读取音频长度不对的解决方法
在开发的过程中碰到这样一个问题,有的音频文件通过UnityWebRequest读取出来后,AudioClip的Length会不对,比如本身有7秒,读出来只有3秒。知道了区别,我们就知道怎么解决了,对于读出来不对的音频,我们可以通过音频软件转换下,将码率换为正确的48kbps以上,采样数24000Hz以上,即可解决问题。比如这个文件,我们通过windows查看时长有6秒,然后我们通过代码输出,发现只有4.032秒,这样会导致我们代码后面的逻辑有了问题。首先我找了个读出来正常长度的音频,我们进行了对比。原创 2024-03-05 14:26:44 · 1214 阅读 · 0 评论 -
Unity应用在车机上启动有概率黑屏的解决方案
在PlayerSetting里将Android下的Resizable Window取消勾选,注意是不要勾选在AndroidManifest.xml里将主Activity的android:resizeableActivity设置为true这样可能能解决你们的问题。原创 2024-01-26 10:39:03 · 885 阅读 · 0 评论 -
系统语言德语时浮点数转化问题
因为C#是面向全球性的应用语言,不同国家有不同的文化,借助CultureInfo使整个.NET Framework更加人性化,因为这可以使同一个数据适应不同地区和文化,这样当然满足处于不同地区和文化的用户。但前提是数据给“人”看,如果这些数据用于计算机之间的传输,即给“机器”看,这样的多文化处理反而不妥,造成同一个数据的不同展现形式,尤其是读写两方的文化地区不同时,数据可能根本无法被正常读取或者产生潜在bug。但是在德国,表示小数则是用 逗号,即 0,123。知道了原理,那么就大概知道怎么解决了。原创 2024-01-12 15:55:03 · 739 阅读 · 0 评论 -
Unity UGUI图片锯齿严重怎么解决
在开发的时候,发现图片锯齿严重,打包到移动端或者在编辑器都这样,如下图。原创 2023-11-24 12:51:19 · 3633 阅读 · 0 评论 -
Unity如何快速接入iOS和GooglePlay的成就排行榜等GameCenter功能
一般在游戏开发中,经常有成就排行榜的需求,按照我们的理解,通常是要自己导入谷歌的sdk,或者苹果的sdk,然后封装后通过桥接来调用。其实不用这么复杂,Unity已经帮我们封装好了,直接调用接口。我们可以通过以下方式进行调用,Unity会自动帮我们根据平台进行调用,大大减少了我们的开发效率。目前所有相关的功能都在Social类中。原创 2023-07-25 18:54:28 · 1864 阅读 · 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 · 7697 阅读 · 10 评论 -
Unity隐藏目录和隐藏文件
在开发的时候,有时候想在项目Assets下放东西但是又不想Unity识别到,可以采用下面的方式,下面我们看官方介绍:Unity - Manual: Special folder names隐藏资源在导入过程中,Unity忽略Assets文件夹(或其中的子文件夹)中的以下文件和文件夹:隐藏的文件夹。 以' . '开头的文件和文件夹。 以“~”结尾的文件和文件夹。 命名为cvs的文件和文件夹。 扩展名为.tmp的文件。效果如下:...原创 2022-05-24 11:54:55 · 1911 阅读 · 0 评论 -
UGUI Text中文符号句首句尾问题
经常在游戏开发中碰到中文符号在句首或句尾导致显示不正常的问题,而TextMeshPro就没有这些问题因为TMP支持配置,那对于项目中没法使用TMP的情况,而用的UGUI的Text的情况,怎么办呢?比如下图:双引号单独在句尾了,这样显示特别不美观,而版署那边又要求修改。还有这种,句号在句首了,也没奇怪。百度谷歌也没找到合适的方案,或找到的方案有瑕疵,因此特地写了一个类,专门解决这种情况,支持配置避免行尾出现的符号、避免行首出现的符号等等,可直接拿去使用。代码如下:using...原创 2022-05-19 10:08:15 · 910 阅读 · 4 评论 -
Android开发之如何与蓝牙设备相互通信
最近研究了下怎么在Android应用上连接蓝牙设备,就比如安卓应用是怎么与手环进行连接的呢,怎么做到在应用点击按钮,修改手环的设置呢?总体开发流程大概是:搜索蓝牙设备列表 选择蓝牙地址进行连接,等待连接成功 搜索蓝牙设备的Services列表 搜索某个Service的Characteristics 订阅Characteristics 接收消息/写入消息至于如何开发,需要有一定的源生Android开发基础。如何在Unity中接入呢,本质也是类似,就是通过Android Studio输出aa原创 2022-05-08 10:29:37 · 812 阅读 · 1 评论 -
C#如何在Windows上接入蓝牙设备
最近研究了下怎么在windows上连接蓝牙设备,并获取蓝牙设备的消息以及如何向蓝牙设备写入消息。该方法同样适用于Unity引擎。本质上还是获取windows的底层API接口进行调用,连接蓝牙设备的流程大概是:搜索蓝牙设备列表,并获取蓝牙设备的属性,其中有属性值有isConnectable、name等等 选择蓝牙地址进行连接,等待连接成功 搜索蓝牙设备的Services列表 搜索某个Service的Characteristics 订阅Characteristics 接收消息/写入消息至于如原创 2022-05-08 10:21:50 · 3124 阅读 · 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 · 3433 阅读 · 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 · 6248 阅读 · 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 · 3606 阅读 · 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 · 13307 阅读 · 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 · 9965 阅读 · 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 · 30505 阅读 · 12 评论 -
Unity打包代码修改gradle.properties或AndroidManifest文件
Unity通过Gradle打包方式会自动生成对应的gradle相关文件,再进行打包,虽然编辑器可以设置一部分参数,但是因为Unity版本不同,参数支持可能不够。以Unity2018.4.17为例仅支持设置部分路径,如需设置gradle版本,并没有地方设置。对于这种情况,其实Unity可以通过IPostGenerateGradleAndroidProject进行设置,不需要升级Unity版本。比如我们可以这样修改打包后的gradle.properties文件,打包完后修改部分参数,..原创 2021-09-10 12:14:38 · 5183 阅读 · 0 评论 -
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 · 1311 阅读 · 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 · 9648 阅读 · 7 评论 -
Unity发布Android App Bundle详解(三)快速转换Addressables
概述对于项目本身就使用AssetBundle的来说,打包新格式aab是很容易的,上篇文章已经详细说过了。对于项目之初没有考虑AssetBundle热更新的项目怎么办呢?项目都是采用Resources加载,并且是同步加载的,unity场景资源也较多,没有做好分包设计的怎么办呢?这篇文章我们讲怎么处理。难点场景采用同步/异步加载 SceneManager.LoadScene ("xx",LoadSceneMode.Single); 资源采用Resources.Load加载原创 2021-07-12 18:02:46 · 5730 阅读 · 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 · 9670 阅读 · 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 · 7896 阅读 · 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 · 1355 阅读 · 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 · 17892 阅读 · 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 评论 -
Unity如何与Android交互
引言最近为了实现Unity与Android之间的通信,在网络上发现了很多种实现方案。有打包Jar的,有打包aar的,有直接拷贝文件的。试了几种方案虽然都能解决需求,但是使用起来给我的感觉并不是很舒服。在各种尝试中,已了解了Unity和Android之间通信的底层原理。该方案为本人结合Java特性所给出,可以减少很多其它方案的一些不明确以及繁琐的步骤。本文适用对象有一定的Unity开发经验,会使用Unity 有一定的Android开发经验,会使用AndroidStudio方案优势不需要转载 2021-06-10 18:23:09 · 831 阅读 · 0 评论 -
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 评论 -
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 · 2923 阅读 · 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 Json序列化高级用法介绍
虽然Unity有自带的JsonUtility类,但是因为支持的东西太少了而且用的时候有各种限制,比如说不能序列化Dictionary,比如序列化必须要加上Serializable等等,所以我比较习惯的是用Newtonsoft.Json。Newtonsoft.Json的GitHub地址在此,里面可以查看文档,教程等等。如何下载源代码?打开包管理器用户界面Window > Package Manager 然后按jillejr.newtonsoft.json-for-unity包装上...原创 2020-07-09 15:53:23 · 1174 阅读 · 0 评论 -
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 · 5215 阅读 · 6 评论 -
Unity安卓适配刘海屏(Notch Screen)
程序员真的命苦,各个安卓厂商搞了什么刘海屏,全面屏,真是苦了程序员,以下是适配过程。未适配刘海屏的应用截图:(左边有黑边,目前小米和华为都是这么处理,也就是将应用右移或左移)而本次教程的目标就是去除左边的黑边。针对Android 8.0(Android O)在谷歌的Android P(Android 9.0)推出之前,各个厂商已经开始了刘海屏的应用,所以对于Android 8....原创 2020-04-09 16:49:12 · 3939 阅读 · 0 评论 -
谷歌拓展文件机制GooglePlay Obb详解
什么是OBB文件?obb文件是安卓提供的一种拆分apk的机制,谷歌要求提交商店的apk必须在100M以下,对于游戏来说几乎都会大于100M,所以可以把apk拆分成apk(小于100M)+obb文件,两个文件一起上传GooglPlay,用户下载的时候会连同apk+obb一起下载到用户手机上,对于用户来说,完全感受不到区别。如何打包obb文件?如果使用Unity的话,打包的时候勾上Spli...原创 2020-03-19 14:39:34 · 6890 阅读 · 0 评论 -
【Sprite Atlas】Unity新图集系统SpriteAtlas超详细使用教程
SpriteAtlas是Unity新出的一个功能,用来取代旧版的Sprite Packer。图集打包的意义:减少DrawCall 图集将图片打包为2的幂次方的素材大小,可以提升性能 减小包体大小Sprite Packer(旧版本)缺点:...原创 2020-03-06 15:40:04 · 37885 阅读 · 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 · 3697 阅读 · 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 · 1184 阅读 · 0 评论