
Unity摸索记录
文章平均质量分 53
记录下自己在Unity的开发中遇到的一些问题以及解决的方案
苏小败在路上
不一样的人生
展开
-
Unity3D-关于U3D中新版文本组件的代码引用类名(TextMeshPro)
但是在使用的时候,需要提示大家一点,在代码引用TMP时,它的类名和在编辑器中显示的不一致。Inspector视图上显示的名字是“TextMeshPro-Text(UI)”,我在定义的时候,使用TextMesh,TextMeshPro,都无法拖拽上去。在很早以前,Unity里面使用的文本UI控件,都是Text,随着Unity3D的更新,Unity里面新增了一个文本增强的库,叫TextMeshPro。里面增加了很多效果,同时,在导入包的时候,还附带了很多特效的着色器,用起来真的很舒服。原创 2023-05-06 11:23:51 · 850 阅读 · 1 评论 -
Unity3D-IOS利用判断某个应用是否安装来区分测试和正式用户
在实际项目开发过程中,可能需要收集用户的信息以及用户在APP中产生的所有痕迹,以便于分析用户在APP中的行为,这样可以更好地指导我们去更新APP,做出更好的APP。但是,我们在开发中,难免会出现需要屏蔽测试用户的信息,这个其实有一些曲线救国的方式,比如:1、拿到我们测试机型的IDFA,通过IDFA将测试产生的数据都排除掉,以免影响数据分析。这个方式的缺点就是IDFA也许会自动化变,目前知道...原创 2019-08-05 16:41:20 · 825 阅读 · 0 评论 -
Unity3D-获取IOS的IDFA和IDFV
void InitUserProperty() {#if UNITY_IPHONE if (UserIDFA == "" && Device.advertisingTrackingEnabled) { UserIDFA = Device.advertisingIdentifier; } if (Us...原创 2019-07-26 09:16:30 · 2231 阅读 · 0 评论 -
Unity3D-Firebase的Database崩溃报错“createRepo called for Repo that already exists”
最近将Firebase的Database更新到6.x版本之后,在iOS上出现了大量的崩溃:createRepo called for Repo that already exists之前都好好的,不知道这次怎么就报这个错误,在网上找了半天,最后发现是因为在调用数据库引用时,不在主线程FirebaseDatabase.DefaultInstance.GetReference("xxxx/...原创 2019-06-25 18:20:23 · 463 阅读 · 0 评论 -
IOS-Unity开发的游戏中获取IDFA出现卡死的问题
在项目用,由于使用Firebase和Facebook事件分析,需要收集IDFA作为用户的唯一标志位。但是在Unity调用原生获取IDFA时,出现是游戏卡死状态。经过我多次尝试,发现如果在Unity加载初始资源时,调用原生代码获取IDFA时,可能会使加载资源的主线程阻塞,具体的原因我并不清楚,但是根据Log的信息看,是加载资源被中断了, 没有继续走下去!改的方式,就是在加载资源完毕之后再去获...原创 2018-07-19 14:58:14 · 1156 阅读 · 0 评论 -
Unity3D-通过调用iOS原生代码将图片进行高斯模糊
之前一直想使用Shader去做高斯模糊特效,后面发现图片过大的话,效率真的是相当的不理想。后来在网上看到说iOS本身是有将图片处理成高斯模糊的功能的,想想也确实,苹果设备的背景经常会出现模糊特效,那他们的算法应该很快速的,于是突发奇想,如果将要做模糊处理的图片,传到原生端然后处理成模糊图片之后,再传回来使用,不就可以达到这个目的了么!首先要知道这个的局限性,不能实时的去做,这是什么意思呢,...原创 2019-05-08 12:29:23 · 584 阅读 · 0 评论 -
Unity3D-AdMob在Android中的回调造成异常的问题
我使用的是Admob的官方Unity插件,这个在iOS上运行一点问题都没有,最近移植到Android上之后,出了很奇怪的问题。比如:看完激励视频之后,拿不到奖励;拿到奖励之后,却没有重新加载新的视频;甚至有时候会直接崩溃或者一些很奇怪的问题。特别是居然调用PlayerPrefs保存数据都出错,说是这个需要要主线程才可以调用,于是给我抛出了一个异常来。一开始还以为是我写的有问题,在改了保存方...原创 2019-04-04 16:03:54 · 1134 阅读 · 0 评论 -
Unity3D-Android关于加载AssetBundle中的视频
Unity现在对视频支持已经算是很好了,特别是iOS上,只要视频格式没有问题,基本就能正常播放和加载。不过,在Android上,如果将视频打包到AB包里面去,可能会出现加载不了的问题,具体情况是在真机中会Log出一条警告,说是找不到视频文件,然后附加说了保证这个文件是否在正确的路径,或者视频没有被压缩过。之前使用AB的经验少,也都是跟着网上的做法做的,在编辑器中直接调用了默认的打包方式:...原创 2019-04-02 17:08:38 · 3592 阅读 · 0 评论 -
Unity3D-Android关于Admob中介Mediation Test Suit的问题
现在Admob测试中介越来越方便了,可以直接下载Admob提供的一个Unity插件,然后在弄个测试按钮中打开中介测试套件,里面会显示你在Admob后台配置中介的所有广告版本,也包括Admob自身的广告。在这个插件显示的界面中,可以查看什么中介平台没有配置好,他都会一个个的列出来: 这样大大的减少测试时间,插件的下载地址:Mediation-test-suite...原创 2019-03-28 14:45:16 · 1347 阅读 · 0 评论 -
Unity3D-Admob中介设置之后google自身的中介适配器缺失问题
在Unity中使用了Admob广告,并且在Admob的后台配置了中介信息,在原来老版本的时候,Google自身的中介适配器是包含在SDK的包里面的,但是最近我把Google广告的SDK更新到最新的7.42.0版本之后,发现根本不出Admob的广告,其他的广告都正常。后面找了很多方式才发现,是由于Unity的包现在不支持最新的Google的最新版本SDK!所以,在从Unity导出到xCode工程...原创 2019-03-21 16:59:22 · 765 阅读 · 0 评论 -
VSCode-代码自动补全和类的导航路径设置
在使用vscode进行Unity3D开发时,如果想使用tab键自动补全和切换,或者在一个类里面找到需要的函数、参数等,这些都是可以在vscode中设置的,之前的我一直都不知道,后面看了更新记录才发现还有这么好用的功能,所以在此记录下。 设置tab捡自动补全或切换: 开启之后,就可以通过tab键补全代码了哦,是不是很方便呀。然后是代码查找,不知道是不是更新了最新版本原因吧...原创 2019-01-03 09:44:34 · 18088 阅读 · 0 评论 -
Unity3D-获取字体的实际像素宽高
如果是获取ttf字体的实际像素宽高,可以使用下面的方式:Text text = GetComponent<Text>(); Debug.Log(text.preferredWidth); Debug.Log(text.preferredHeight);如果是获取自己制作的图片字体宽高,需要拿到字体中的每个字母的宽高,再将他们加起来就可以了:/// <sum...原创 2018-12-24 15:02:01 · 4246 阅读 · 0 评论 -
Unity3D-Firebase的崩溃接入(iOS,Mac端)
Firebase给我们提供了崩溃收集程序包,我们只要把SDK弄到工程中去,就可能在Firebase后台收集到用户的崩溃信息,以便完善自己的应用,这里主要说的Mac端的下载Firebase的Unity包,导入基本包之后,如果没有其他需要,可以直接导出一个XCode工程了,这个过程可以参考我前面的博客接入谷歌Firebase步骤,或者去官网看也可以,前面步骤是一样的至于安装Pod可以参考这...原创 2018-11-28 10:14:11 · 1909 阅读 · 0 评论 -
VSCode-Unity3D之C#代码浏览步骤的导航器
在VSCode,有时候点了跳转到定义,然后要回到原来的地方很麻烦,后面在扩展程序中看到一个好的插件,可以记录操作过程,然后可以返回或前进一步。插件名:Code Navigation在VSCode扩展程序搜索这个,安装重启即可。在编辑器下方的状态栏,有两个箭头就是了!...原创 2018-10-09 10:17:20 · 871 阅读 · 0 评论 -
Unity3D-关于Camera.main.ScreenPointToRay方法的问题
最近在做一个鼠标点击选中物体的功能,因为之前一直都是做的2D,使用的也是UGUI去做的小游戏,所以,摄像机被我设置成了正交模式。但是,最近项目需要在原来的基础上,添加3D功能,并且用到的鼠标点击选中物体的功能!本身这个功能并不是很难,直接通过射线去检测即可。由于之前UGUI使用了主摄像机,所以一开始的想法是另外单独用一个摄像机来渲染3D物体,并且也想好了临时更改物体之后,可以将辅助摄像机上的画...原创 2018-08-02 15:01:11 · 8191 阅读 · 4 评论 -
Unity3D-iOS创建本地视频
在游戏中,有时候需要将一些简单的图片组合成视频,然后让用户分享出去,当然仅仅是那种很简单的图片组合视频(这是我自己项目的需求,不需要录制UI等其他东西)。本来想找插件的,后面看到大部分插件都是通过摄像机去录屏,但是我们项目本来就一个对图片操作的游戏,因此没法用插件。寻思着自己写一个,还好iOS方面的东西还是很齐全的,在查阅了很多资料和博客之后,终于被我弄出来的。原理也简单,就是通过写iOS...原创 2018-08-01 10:58:54 · 544 阅读 · 0 评论 -
Unity3D-iOS分享本地视频或图片到Instagram(可直接打开Instagram分享的方式)
最近,看到App Store上有些应用可以直接把做好的视频或图片分享到Instagram上,而且是那种直接打开Instagram,并且可以直接编辑的方式,这种分享非常的友好,不需要用户去登录,只要安装了Instagram就可以直接跳转过去,相当于我们说的一键发布,省去了很多的麻烦。可是,在我去Instagram的开发者网站看的时候,发现并没有说怎么直接打开Instagram的方式,然后花了将近5天...原创 2018-05-25 10:29:03 · 4408 阅读 · 2 评论 -
Unity3D-iOS因为IPv6崩溃而被拒的问题
最近在Apple store更新版本时,第一次被拒了,很伤心!提示如下:Guideline 2.1 - PerformanceYour app crashed on iPad or iPhone running iOS 11.2.5 connected to an IPv6 network during our review.We have attached detailed crash...原创 2018-03-24 09:30:01 · 1152 阅读 · 0 评论 -
Unity3D-iOS中使用Tilemap问题研究以及解决方案
前不久刚刚研究了Unity3D的Tilemap,在编辑器里面捣鼓了半天,总算是弄明白怎么用了。昨天想着可以上真机试试看,结果悲剧果然发生了。在iOS平台上无法显示Tilemap!准确来说,是在iOS平台,用代码初始化Tilemap没有效果,log里面你会看到下面的错误:NullReferenceException: A null value was found where an object in...原创 2018-03-23 09:33:13 · 3284 阅读 · 0 评论 -
Unity3D-协程中嵌套了协程如何停止的探索
在Unity里面有个很好用的东西,就是协程!它可以很好的帮助我们做很多类似异步加载的东西,特别是资源多的时候,用的很频繁。而且,在一个协程之中,还可以嵌套很多小的协程,会让你用起来很舒服,思路很清晰。但是,有时候需要停止加载,这里就出现问题了。因为经过尝试,Unity中的协程,只有两个方法可以停止协程,第一个是“StopCoroutine”,还有一个是停止所有的“StopAllCoroutines...原创 2018-04-08 11:38:11 · 1784 阅读 · 0 评论 -
Unity3D-关于iphoneX适配,简约方式
这个是简单粗暴的方式,但是也有缺点。一下代码都是在Unity2017.2.1版本测试的。在导出的xcode工程里面,在UnityAppController.mm中,添加头文件:#import <sys/utsname.h>该类增加获取机器型号的函数:- (NSString*)getDeviceVersion{ struct utsname systemInfo; uname...原创 2018-04-19 15:45:32 · 2407 阅读 · 0 评论 -
Unity3D-关于Unity屏幕坐标到iOS屏幕坐标的映射方法
有时候在Unity里面做一些原生的功能,比如:在某个UI的Button旁边弹出一个原生的选择框,我们需要知道这个选择框要显示在那个位置,但是我们只知道在Unity的UI坐标,那么怎么从Unity的UI坐标转到原生去呢。其实有一个很好的办法,Unity之前已经考虑到了,那就是ViewPoint,这个就是关键。ViewPoint是什么?它就是指一个点在屏幕中的百分比!比如,我们的UI的中心点是(0,0...原创 2018-04-25 09:35:53 · 1097 阅读 · 0 评论 -
Unity3D-iOS打包出现“This application does not support this device’s CPU type.”的问题
这个可以看这里:https://blog.youkuaiyun.com/sinat_22545219/article/details/79352050不过这个是可以在Unity里面设置的:在Build设置里面,将Architecture设置为Universal即可原创 2018-05-11 09:06:39 · 3381 阅读 · 2 评论 -
Unity3D-UGUI特效之Image的流光、扫光效果
今天研究下了UGUI上面Image的扫光效果,我是参考了下面这篇文章做的,然后自己加了一些控制和判断,让扫光看起来更加合理原文地址:点击打开链接我在他的基础上,加了一个倾斜度参数,可以控制扫光斜度,另外,有时候图片有阴影,我们不希望把阴影也加个扫光,所以在Shader里面做了一个透明度的判断,然后又半透明的不做处理,使用原来的颜色。还有,我加了一个值控制扫光的进度,从0到1,这样就能在原创 2018-02-01 11:12:26 · 27288 阅读 · 4 评论 -
Unity3d-UGUI特效之Image的Skew变形、倾斜效果
这次在项目中,做动画时,想要多UI的图片做倾斜动画,比如进场有一定的斜度,然后又变回原来的样子。于是在网上搜索有关Image变形或倾斜的做法,后面找到根据文档发现可以通过继承Image来做一些修改,关键是在Image渲染之后,我们拿到顶点坐标,对坐标做一定的偏移,就可以达到目的了。先来看看效果:看着效果还不错,看代码:using System.Collections;using System.C...原创 2018-02-08 09:15:31 · 13681 阅读 · 18 评论 -
Unity3D-iOS崩溃之“__TCCAccessRequest_block_invoke_2.80 + 222”
今天在itunesconnect上看到好多这个崩溃崩溃日记如下:经过查找发现,是由于用户在分享弹出框中将图片保存在相册时发生的。在iOS新版本中,苹果对设备使用的权限有了限制,上面发生的就是因为未获得保存图片到相册的权限,导致的崩溃。因此,只要在xcode的info.plist文件加入权限即可。也可以用文件格式打开,添加下面的字段:<key>NSPhotoLibraryAddUsage...原创 2018-02-26 14:57:54 · 3358 阅读 · 0 评论 -
Unity3D-Android调用系统分享针对8.0系统的方式
我在原来的帖子上写了一个关于Android原生分享的方法:http://blog.youkuaiyun.com/pz789as/article/details/77979594但是,在后面测试的时候发现,这个方式在Android 8.0 上不起作用,点了按钮之后,并没有弹出原生分享框。网上大部分的原生分享代码都和我上面写的一样,所以只能自己看文档,慢慢再试其他的,最后经过努力,终于给弄出来了,还兼容低版本的A...原创 2018-03-01 13:37:33 · 1843 阅读 · 2 评论 -
Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)
最近新项目需要做一个用到瓦片地图的游戏,第一想法就是要用Tilemap,之前Unity没有自带的Tilemap,都是第三方插件。知道去年2017.2发布,就有自带的Tilemap啦!将Unity升级到2017.3.1,Tilemap的基本操作,其实API已经有了,看这里:Unity Tilemap API然后在给个别人已经翻译了的:中文由于我项目的特殊性,需要在代码里面创建和修改Tile,初始化T...原创 2018-03-13 16:34:54 · 26583 阅读 · 4 评论 -
Unity3D-iOS崩溃之“AGXGLDriver: glrKillClient + 464”
我的项目上线后,出现好多这个崩溃,还主要是iOS10以上很容易出现:AGXGLDriver: glrKillClient + 464在网上查了半天,说是一个webview在后台刷新的引起的,但是我并没有使用webview,经过排查之后,发现其实就是展示谷歌广告的时候会用到webview。于是在程序中处理了下广告,就是当游戏挂起时,把广告都不显示或者销毁,总之就是不让他们刷新就可以了。void On...原创 2018-01-15 13:23:49 · 1282 阅读 · 0 评论 -
Unity3D-UGUI特效之Image的高斯模糊效果
这几天研究了下模糊特效,看了很多文章,其原理就是拿取图片或屏幕数据,然后将周围的元素和目标位置的颜色值进行一个融合计算,然后自己写了一个小小的测试程序。这个模糊也可以分成两种,一个是自身模糊,一个是从屏幕上取值进行模糊。第一个用于一些小的列表展示,比如未解锁时,是模糊的。第二个是凸显弹框效果的,将背景都模糊掉,自己将这个稍微加强了些可以指定模糊一个位置。针对移动平台,使用高斯模糊,其实效率原创 2018-01-13 13:08:38 · 24665 阅读 · 13 评论 -
Unity3D-关于UnityIAP1.50.0在5.6.4f1版本中使用时出现自动购买问题
最近,unity老是弹出IAP更新了,让我赶紧更新,结果我更新了之后,上真机跑的时候发现,有时候会突然自动购买物品。是那种不需要用户确认购买的那种,简直太流氓了。一时不知道该如何处理,不知道上线会不会出现,但是好在有以前的版本。我把IAP回复到1.31.0之后,就没这个问题了。目前,这个新的IAP版本在2017版本的Unity中没有出现这个情况,如果有人遇到我一样的情况,可以试试恢复到老版原创 2017-12-22 14:17:20 · 772 阅读 · 2 评论 -
Unity3D-Android导出APK出现“Unable to convert classes into dex format.”
今天在更新android版本的时候,导出又出现这个问题了,上次是因为有重复的,但是这次没有重复,看提示是什么东西超过限制在网上查了一大堆,最后也没解决。导出时log如下:CommandInvokationFailure: Unable to convert classes into dex format./Library/Java/JavaVirtualMachines/j原创 2017-12-27 14:55:41 · 3122 阅读 · 0 评论 -
Unity3D-在代码中设置RectTransform的锚点、位置
unity自己出了UGUI之后,方便UI界面的编辑使用,再也不用其他插件了,最近看到了RectTransform的两个方法,使用起来还是蛮方便的,因为在做UI的list的时候,经常要做的是在代码里面生成列表的元素,所以就用到了我下面说的两个方法:SetInsetAndSizeFromParentEdgeSetSizeWithCurrentAnchors第一个是根据边来设原创 2017-12-13 13:16:30 · 14286 阅读 · 0 评论 -
Unity3D-应用内打开AppStore某个应用详情方法(iOS应用内下载、应用内评星)
本来可以通过Unity的Application.OpenUrl的方式,跳转到AppStore中去评价,但是iOS6以上还有一个方式,可以直接在应用内弹出评价框来那么我在以前的NativeShare的基础上增加了一个函数,就可以使用了。之前的代码看这里:Unity3D-调用IOS原生分享的实现 首先是 .h 文件:#import #import //引入弹框库@interfac原创 2017-12-05 14:59:41 · 3608 阅读 · 4 评论 -
Unity3D-使用Firebase中的云消息推送
在此记录下使用Firebase云消息推送的过程:在Firebase的console里面,选中自己的项目,左边菜单栏有个Project Overview的标签,有个齿轮图标,点进去可以看到项目设置;我们需要在“云消息推送”的子标签里面上传一个“APNs 身份验证密钥”,该文件是需要你去苹果开发者网址下载一个.p8的密钥文件,等于是拿到苹果的远程推送的授权一样。接下来,我们就去 htt原创 2017-11-22 16:42:55 · 4793 阅读 · 8 评论 -
Unity3D-接入谷歌的Firebase(iOS,Mac端)
谷歌的Firebase确实超级好用,但是对于新手,一开始都不知道如何接入,特别是对原生开发不了解的情况下。我就是走了好多路,最后才发现,原来要接入FirebaseSDK,只需要在电脑上安装了pod就可以了,然后跟着文档走就一切顺利打包。关于pod的安装,坑也挺多的,不过好在网上都有答案,跟着文章一步一步走,基本也能解决了。这里需要特别提醒的是,当加入FirebaseSDK之后,Unity导...原创 2017-11-14 14:49:31 · 3014 阅读 · 21 评论 -
Unity3D-Android跳转到指定平台(华为商店为例)
我们可以利用前面说博客说的,直接在Unity这边写代码去实现一些简单的Android功能,那么跳转到各大平台的商店,也是类似的做法。直接看代码://跳转到指定应用商店,这里以华为为例 public void OnRateToHuawei(){ RateToOther("com.google.android.apps.maps", "com.huawei.appmarket"); }原创 2017-10-13 11:02:58 · 4655 阅读 · 0 评论 -
Unity3D-UGUI的Text组件渐变效果
今日在做项目中发现,很多时候需要对文字多特殊处理,渐变就是最常用的。特别是文字特别多,还有动态的时候,就不能只靠图了,否则包的大小就吃不消了。在网上搜到雨松写的渐变代码,于是就拿来用了。可是版本不一样,我的是5.5.0版本,函数ModifyMesh的参数已经是VertexHelper了,所以就需要改动改动具体代码如下:using System.Collections;using原创 2017-03-24 11:39:29 · 5616 阅读 · 4 评论 -
Unity3D-性能优化最佳实践(一)分析(Profiling)
作者: Ian 翻译: Kelvin Lo / 海龟原文地址:http://gad.qq.com/article/detail/7192224Profiling - 分析 说到优化,不得不说所有优化的源头都是从发现问题开始,第一步是分析,根据项目技术和资源结构的分析报告结果来划出项目问题的可能范围。 注意:本文里使用的一些追踪程序代码是基于Unity 5.3版转载 2017-06-08 11:24:31 · 6903 阅读 · 0 评论 -
Unity3D-在mac上使用VSCODE开发
参考:http://blog.youkuaiyun.com/pz789as/article/details/53504724 由于在Mac上,使用unity自带的Mono并不好用,特别是无法切换输入法,让人很纠结。但是还好微软推出了vscode,用起来挺不错的!首先去官网下载最新的vscode,解压后把包拖入launchpad里面去;然后打开vscode,点击扩展,下载一些vscode插件...原创 2016-12-07 14:36:25 · 24848 阅读 · 7 评论