![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 61
iningwei
这个作者很懒,什么都没留下…
展开
-
Unity基于EventSystem让SpriteRenderer支持点击事件
若2D场景中使用了UGUI的UI系统,则默认是有EventSystem的。否则可以创建个UGUI的物体,然后保留EventSystem,删除其它不需要的。同理3D项目中物体也可以使用类似的方式,使得3D物体可以使用我们熟悉的类似UGUI的点击事件。组件,并妥善设置其EventMask属性。为SpriteRenderer物体添加。后面的用法就和传统Button一样了!碰撞体组件,否则其接受不到射线检测。原创 2024-06-12 19:51:13 · 584 阅读 · 0 评论 -
Wifi环境下Unity开发iOS应用启动后HTTPS请求未弹出是否允许无线数据使用数据的弹窗
上述笔者这边都排除了,但是有个可能是笔者这边HTTPS请求是使用的是一个比较老的稳定性挺好,且用于多个线上项目的Best HTTP插件,有可能是Unity升级后插件适配的问题?笔者项目在首次启动,登录界面点击登录按钮会先HTTPS请求创建帐号,但是在WIFI网络下,请求后一直提示网络连接失败。遂写了个iOS插件,在进入登录界面时模拟一次网络请求。的权限是关闭的,而使用流量时又可以内部触发弹出权限选择界面。一般而言App首次启动,网络请求时都会弹出。的弹窗,选择允许后则可顺利进入。"无线数据"使用数据。原创 2024-03-18 19:38:02 · 448 阅读 · 0 评论 -
MAC机器Unity接入iOS SDK安装cocoapods全攻略
unity打包ios工程报错iOS framework addition failed due to a Cocoapods installation failure. This will will。这篇博文中错误原因应该就是之前在配置仓库时,未事先选择XCode导致的。原创 2024-03-14 16:09:18 · 1514 阅读 · 0 评论 -
AndroidStudio连不上adb报错ADB Connection Error
之前笔者一直通过AndroidStudio来看日志,也一直用的一套自己的SDK,用了好几年了。但是突然有一天,AndroidStudio启动后就弹出警告窗:ADB Connection Error,如下:在Event Log面板还持续性的输出:Unable to detect adb version检查了一下,我端口5037并没有被其它进程占用,是adb占用的。adb服务也是正常启动的。最终找到原因是:可能是更新了AndroidStudio,adb的版本不匹配。原创 2024-03-06 16:04:26 · 624 阅读 · 0 评论 -
Unity中PlayerPrefs在PC上存储位置总结
编辑器下和EXE存储位置是不同的,这也不难理解,是为了避免存储位置相同导致开发和测试冲突。只会清理掉编辑器下的储存信息,无法清除EXE对应的位置。因此针对清除EXE的需求,笔者这里使用bat命令传参删除目标注册表("工具/PlayerPrefs/删除本项目 PC包对应的所有PlayerPrefs信息"注意:在unity中还有个,一定要慎用其方法,会删除编辑器的一些设置!!!原创 2023-12-01 18:21:07 · 948 阅读 · 0 评论 -
Unity中使用WebP类型文件
WebP是一种由Google开发的图像格式,旨在提供更高的压缩效率和更好的图像质量,特别是针对Web上的图像传输。以下是一些关键特点:压缩效率: WebP通常能够提供比JPEG更好的压缩效率,尤其是对于包含大量颜色的图像。透明度支持: WebP支持有损和无损压缩,而且能够在有损压缩中保留透明度。这是与JPEG相比的一个优势,因为JPEG不支持透明度。动态图像: WebP格式还支持动态图像,类似于GIF。这使得它适用于展示简单的动画。颜色配置: WebP支持多种颜色配置,包括灰度、彩色和透明。原创 2023-10-26 17:26:49 · 1184 阅读 · 0 评论 -
Unity卡通渲染
Unity卡通渲染总结原创 2023-04-28 17:07:33 · 472 阅读 · 1 评论 -
Unity Navgation系统杂记
然而事实是这样的话也会使物体发生不可控的瞬移,原因就是NavMeshObstacle的禁用不是立即完成的,上述代码会导致在当前帧NavMeshObstacle、NavMeshAgent都处于开启状态。如果你想各个单位能够更好的到达终点则每个单位的终点并不应该设置为同一个点,你可能需要根据每个角色的寻路半径来预先随机设置每个角色会到达的对应的位置,这样在寻路时才不会互相推挤。若有大量的角色同时寻路,且伴随carve的重建,那么寻路会很耗时,表现出的结果就是角色很卡,可以通过设置。为一个很大的值来规避。原创 2023-04-28 17:00:33 · 1629 阅读 · 0 评论 -
Unity使用IL2CPP方式打Windows包
1,确保安装了对应版本的扩展包:UnitySetup-Windows-IL2CPP-Support-for-Editor。建议使用Visual Studio Installer补充安装一些C++相关的工具包。可以考虑把如下脚本放到Assets目录下(来自。笔者Unity版本2021.3.8f1。原创 2023-02-06 17:56:12 · 6611 阅读 · 1 评论 -
Unity编辑器Inspector界面中cs脚本文件乱码问题
既往经验通常都会在模版文件夹下修改模版文件的编码格式为utf-8编码。但是使用vs编辑代码写入中文保存后,文件编码格式变成ANSI,导致在Unity编辑器中的中文是乱码显示。因此如何设置VS保存文件的格式才是最根本的解决方法。原创 2023-02-01 16:02:13 · 872 阅读 · 0 评论 -
Unity WebGL实战笔记
Unity提供了WebGL平台来,支持在浏览器中实时对3D图形应用交互。原创 2022-12-13 16:16:44 · 5455 阅读 · 1 评论 -
Unity接入Protobuf协议
1,Google出品2,他是一种与语言无关、与平台无关,是一种可扩展的用于序列化和结构化数据的方法,常用于用于通信协议,数据存储等。他是一种灵活,高效,自动化的机制,用于序列化结构化数据,结合 JSON 和 XML 来理解,你可以暂时将他们仨理解成同一种类型的事物,但是呢,Protobuf对比于他们两个,拥有着体量更小,解析速度更快的优势。XML、JSON 更注重 数据结构化,关注人类可读性和语义表达能力。Protobuf 更注重 数据序列化,关注效率、空间、速度,人类可读性差,语义表达能力不足。原创 2022-10-24 23:41:52 · 1446 阅读 · 1 评论 -
Unity Profiler Gfx.WaitForPresentOnGfxThread占用过高
当在Profiler CPU项中Gfx.WaitForPresentOnGfxThread 这个项占比过高时,往往代表Unity的主线程已经跑完了,但是在等待GPU的渲染完成,这样做是为了达到同一的帧数。至于为什么Render Thread会很慢,需要通过查看GPU Profile或者结合项目实际情况去分析。比如场景开启了事实光照和阴影,在出现密级阴影时会消耗大量GPU。原创 2022-10-24 00:07:15 · 2936 阅读 · 0 评论 -
SDK Tools version25.2.5 26.1.1
后面笔者彻底放弃这个祖传SDK了。由于笔者开发的是手机游戏,机器上android studio也是必备的,就直接使用android studio的SDK管理工具,下载了新的SDK就没有上图的问题了。上图是19年11月贴的。当时用的还是自己很多年前就一直祖传的安卓SDK,就是那种自带SDK Manager的。之前一般就是选择Use Highest Installed就能解决。原创 2019-11-14 21:07:25 · 5923 阅读 · 5 评论 -
Unity粒子特效场景视图下可见但游戏视图下不可见
情况说明项目使用fairygui做的2D项目,美术做的粒子特效,通过GoWrapper的方式挂在特效节点上。有一个特效下有若干个粒子发射器,在美术工程中单独运行这个特效,Scene视图和Game视图下所有的粒子发射器都工作正常。但是在项目工程中加载到挂点后,出现一个粒子发射器在的效果在Game视图下不可见的问题。解决这边先排除了ParticleSystem->Renderer->...原创 2019-11-26 20:42:27 · 5796 阅读 · 0 评论 -
Unity桌面应用,全屏状态下设置分辨率
Unity3D设置了全屏后,并设置内容的分辨率1024*427Default is Full Screen = CHECKEDDefault is Native Resolution = UNCHECKEDDefault Screen Width = 1024Default Screen Height = 427Display Resolution Dialog = DISABLEDR...原创 2019-12-01 16:30:15 · 1687 阅读 · 0 评论 -
Unity3D中的Mono内存管理
什么是Mono内存Unity引擎托管堆内存是由Mono分配和管理的。“托管”的本意是Mono可以自动地改变堆的大小来适应你所需要的内存,并且适时地调用垃圾回收(Garbage Collection)操作来释放已经不需要的内存,从而降低开发人员在代码内存管理方面的门槛。Unity游戏在运行时的内存占用情况可以用下图表示:目前绝大部分Unity游戏逻辑代码所使用的语言为C#,C#代码所占用的内...原创 2020-02-12 16:40:55 · 2766 阅读 · 1 评论 -
Unity3D获得某个方法的执行时间
法一c#的Stopwatch类已经提供,代码如下Stopwatch sw=new Stopwatch();sw.Start();TestMethod();sw.Stop();Debug.Log(string.Format("total:{0} ms",sw.ElapsedMilliseconds));sw.Reset();可以对某个实例化的sw进行重置法二也可以使用Profil...原创 2020-02-21 11:57:31 · 948 阅读 · 0 评论 -
[图形学]ASTC纹理压缩格式
ASTC(AdaptiveScalableTextureCompression),由ARM和AMD联合开发,2012年发布。是一种基于块的有损压缩算法。它的压缩分块从4x4到12x12最终可以压缩每个像素占用1bit以下。ASTC格式支持RGBA,适用于POT和NPOT纹理。上图展示了不同BlockSize下每个像素占用的bits。易知,BlockSize越大,压缩的越厉害。以ASTC4*4BlockSize为例,可以看到每个像素占用8bits即1个字节。......原创 2022-07-19 11:56:29 · 4359 阅读 · 0 评论 -
Unity打Android包报错Error building Player Exception OBSOLETE - Providing Android resources in AssetsPlug
对Unity工程进行了大版本升级,从2020.3.20f1升级到2021.3.3f1。打包报错如下Exception。原创 2022-07-15 12:08:59 · 3092 阅读 · 0 评论 -
Unity编辑器扩展
使用MenuItem标识可以为编辑器添加新的菜单,也可以为Inspector上下文添加菜单。点击后执行一些特定的逻辑,没有额外的操作界面。只有静态方法可以使用该标识,该标识可以把静态方法转换为菜单命令。另外可以为菜单创建快捷方式(hotkey),你可以使用如下特殊修饰字符:%(Windows系统上的ctrl,OS X系统上的cmd),#(shift),&(alt)。比如快捷方式“shift-alt-g”的写法为[MenuItem(“XX/XX/XXX #&g”)]。如果不需要为hotkey提供修饰符需要用原创 2022-07-07 18:34:01 · 5792 阅读 · 0 评论 -
Unity编辑器实用小技巧
1:playing的时候改变了代码,重编译导致各种报错Playing状态下,Unity3D编辑器默认会在检测到代码改变后,进行重新编译,然后继续运行。可以通过Editor->Preferences->General->Script Changes While Playing来设置Playing状态下,代码重编译的时机。2:最大化窗口Shift+space快捷键,可以最大......原创 2019-03-06 16:33:25 · 1501 阅读 · 0 评论 -
Unity中精灵Sprite,精灵图集SpriteAtlas详解
https://www.xuanyusong.com/archives/3304https://blog.csdn.net/qq_38721111/article/details/79870373https://www.codeandweb.com/texturepackerhttps://www.cnblogs.com/lancidie/p/8638926.htmlhttps://ass...原创 2019-03-27 19:03:01 · 6431 阅读 · 1 评论 -
[SDK]Unity接入Sign in with Apple
iOS13之后引入了,Sign In with Apple是跨平台的,可以支持iOS、macOS、watchOS、tvOS、JS。对iOS上的App而言,若引入第三方或社交登录(Facebook,支付宝等)那么则必须接入SIWA(Sign in with Apple)。满足以下条件可以不使用苹果账号登陆:1,应用仅使用开发者公司自己的账号设置和登录系统;2,应用归类为教育、企业或商业应用,要求用户使用现有的教育或企业账号登录;3,应用使用政府或行业支持的公民身份识别系统或电子D对用户进行身份验证;原创 2022-06-27 19:10:51 · 2060 阅读 · 0 评论 -
[SDK]Unity接入Facebook SDK获取用户头像
官方文档:Facebook Login For Gaming总结如下:1,你的FB账户内还有一个游戏账户,在Unity中使用FB的官方SDK提供的接口进行登录时,比如当使用gaming_profile权限登录,拉起的登录界面只有游戏账户选项;当使用gaming_user_picture权限登录,拉起的登录界面既有FB账户选项又有游戏账户选项。2,不同的登录选项会获得不同的头像和玩家名比如,当玩家通过游戏账户登录,那么后续通过FB.API获得的头像是游戏账户的头像,获得的name是游戏账户设置的昵称因原创 2022-06-21 18:51:43 · 1794 阅读 · 1 评论 -
Unity UGUI RawImage RenderTexture完美解决方案
前言UGUI中使用RawImage加载RenderTexture是一种很常用的3D转2D的方案,常被用于角色立绘显示、特效显示等需求中。流程一般而言会有一个专门的相机对目标物体进行渲染,并把结果存储到RT(RenderTexture)中,然后在最终的RawImage中显示RT。因此流程可以划分为两个阶段:Model →\rightarrow→ RT这阶段Model使用的Shader是不固定的,千奇百怪。RT →\rightarrow→ RawImage这阶段默认情况下RawImage使用的原创 2022-04-06 13:00:48 · 6814 阅读 · 0 评论 -
[Unity3D]获取设备唯一标识符
前言Unity3D提供的SystemInfo.deviceUniqueIdentifier是有bug的。对于iOS设备,在iOS7之前可以获得设备MAC地址的hash值,但在iOS7及之后的设备无法获取正确值。对于Android设备,一般会返回ANDROID_ID的md5值。对于Windows Standalone设备会返回由硬件(主板、BIOS、处理器、磁盘驱动等)序列号组成的字符串的h...原创 2020-02-04 20:50:55 · 13786 阅读 · 1 评论 -
Unity接入谷歌推送FCM
前言自2014年Firebase被Google收购以来,其已成为Google移动平台的主要产品。FCM已完全替代谷歌自己的GCM作为安卓手机的首要推送服务(当然这只针对海外,国内厂商机器默认是没有安装谷歌服务的,且大部分手机完全不支持安装)。海外Push通道push整个推送环节中,push通道是决定整个发送率和到达率的关键一步,push通道的稳定会影响整个push推送的质量。海外push通道类型主要分为:FCM通道(由 Google 提供的推送服务)、厂商通道和长连接通道,三个通道各自有各自的特点原创 2022-03-17 20:15:00 · 5611 阅读 · 0 评论 -
Unity XCode打包报错 Undefined symbols for architecture arm64
这个报错一般是相关的库没有引入,笔者查看详细报错信息提示的是libxlua.a未引入返回XCode,确实未看到对libxlua.a的引用,如下图:但是项目工程里面确确实实是有的,且放在Plugins/iOS(或者Plugins/…/iOS)目录下的。最后发现原因是Unity内未为其勾选目标平台[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jq4kXFcL-1647515662257)(https://raw.githubusercontent.com/iningwe原创 2022-03-17 19:15:54 · 8682 阅读 · 0 评论 -
MAC新机Unity开发报错error installing cocoapods
MAC新机系统11.4,安装的XCode版本为13.2.1。打开一个Unity工程,切换到iOS平台后,后台进行了CocoaPods的安装,但是报错提示安装失败:ERROR: Error installing cocoapods: ERROR: Failed to build gem native extension. current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/ext/ffi_c/System/Librar原创 2022-03-17 19:01:37 · 8873 阅读 · 0 评论 -
Unity TextMeshPro图文混排
笔者最近项目使用TextMeshPro完成图文混排的需求,以及图文超链接,总的来说功能很强大,没遇到什么坑。这里记录一下图文混排实现的基本流程流程。制作需要混排图片.asset文件方式一使用图集生成SpriteAsset,需要保证图集的Mode是Multiple类型,即已经裁分了精灵。右键图集文件选择Create->TextMeshPro->Sprite Asset,会自动生成和图集同名的.asset文件。.asset文件需要放置到TextMesh Pro/Resources/Spri原创 2022-03-09 11:40:35 · 4793 阅读 · 0 评论 -
Unity跳转App的应用市场
APP应用市场提供了专门的格式URL用于应用市场的跳转。安卓中的格式为:market://details?id=安卓应用包名IOS中的格式为:itms-apps://itunes.apple.com/app/id苹果应用APPID。一般情况下Unity中可以通过Application.OpenURL(url)的方式,直接调用上述专用格式URL即可打开。安卓平台但是对于安卓平台,由于碎片化,机器中可能会安装有多个应用市场,这样的话直接使用Unity的API会随机打开一个应用市场。可以通过下述方法打原创 2022-03-08 12:25:45 · 5267 阅读 · 0 评论 -
浅谈Unity中的文字显示
以UGUI系统为例,字体分为内置字体、外部导入字体、自定义字体。文字一般通过Text组件进行显示。目前Unity已经官方支持TextMeshPro,因此也有一些文字通过TextMeshPro-Text(UI)组件进行展示,可以支持比Text组件更强大的功能(更强大的富文本、图文混排)。同时我们也可以借用工具(比如bmfont)设计效果更复杂的所谓美术字,Text组件是默认支持美术字显示的。内置字体当创建Text组件后,默认的字体是Arial,这是个西文字体,是Unity自带的字体。之所以在编辑器和手机原创 2022-02-28 19:02:45 · 7112 阅读 · 0 评论 -
Unity TextMeshPro显示中文
TextMeshPro插件导入Unity后,其自带的默认字体只支持西文字符和一些标点符号,是不支持中文显示的。为了支持中文的显示通常有两种方案。静态字体方案Window->TextMeshPro->Font Asset Creator,打开如下界面:Source Font File选中一个中文字库Character Set选项选择Charactors from File这样就可以通过配置一个中文文档来生成中文字库。这种对于只有某些中文字符的项目是可行的,对于有聊天系统自然就行不通了原创 2022-02-28 19:01:56 · 8332 阅读 · 0 评论 -
[SDK]Unity接入GooglePlay支付弹出面板:无法购买您要买的商品
使用测试帐号登录GooglePlay商城后,测试自己游戏的支付时弹出界面如下:提示用户:无法购买您要买的商品。解决方法:让运营把开发者后台的测试链接发给你,点击同意后才能测试购买功能(同时确保自己的邮箱被加入到测试名单和支付测试名单中)。正常情况下测试支付界面如下图所示:...原创 2022-02-11 18:12:59 · 2204 阅读 · 0 评论 -
[SDK]Unity接入GooglePlay支付日志提示In-app billing API version 3 is not supported on this device
使用Unity的IAP接入了GooglePlay支付,之前通过测试帐号测试顺利通过(测试机为国内某米手机和国外pixel)。过了一段时间由于需要更改包名,于是把相关key什么的重新处理了一下,再在pixel手机上测试时就无法顺利支付,通过日志发现IAP初始化并没有成功,发现一条日志信息是:In-app billing API version 3 is not supported on this device.而且发现pixel手机在其它游戏中也无法支付,由于其它游戏做了统一的提示处理(比如Google P原创 2022-02-11 16:17:34 · 1917 阅读 · 0 评论 -
[SDK]Unity接入Firebase推送SDK安卓机器上设置图标
前言android5.0(API Level21)后(不包括5.0),为了统一系统风格,状态栏(手机顶部)icon不能再使用色彩丰富的图片了,只能够有白色和透明两个颜色出现。通知栏图标会自动把icon的透明通道填充为白色,非透明通道默认情况下会被设置为系统默认的颜色(比如铅灰色)。虽然可以通过降低targetSdkVersion的方式来实现显示彩色icon的功能,但是考虑到5.0系统已经很古老,不推荐这样设置了。因此在设计推送图标的时候就不可能像APP图标那样有丰富的色彩,一般而言需要遵循:只有白色和原创 2022-02-09 17:13:27 · 3835 阅读 · 1 评论 -
Firebase SDK之打点事件(event)
环境Unity 2020.3.20f1Firebase Unity SDK 8.3.0接入接入代码教程不赘述,可以直接看文档。这里提一下需要注意的几个地方:1,事件名不需要配置到后台,后台要配置的是事件参数后台只需要配置事件参数这一点和很多打点SDK都是不同的。Firebase中后台统计会自动获得用户上传的事件名并形成相关图文报告。另外UnitySDK中事件参数类型只支持string、long、double类型(即字符、整数、浮点)2,后台事件参数配置事件参数通过"自定义定义(Custom原创 2022-01-24 18:21:31 · 4140 阅读 · 1 评论 -
Unity使用IL2CPP方式出包报错Failed running il2cpp.exe
Failed running C:\Program Files\Unity2019.2.8f1\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile=“unityaot” --compile-cpp --libil2cpp...原创 2020-02-21 22:11:26 · 16382 阅读 · 4 评论 -
Unity发布安卓包提审Google Play平台经验总结
政策说明1,安卓包需要签名2,自2019年8月1日起,所有新提审的包,需要既支持32位又要支持64位CPU注意事项注意一:Scripting Backend一定要选择IL2CPP,默认Mono是不支持64位的。Target Architectures勾选ARMv7和ARM64(默认是勾选了ARMv7的,Backend切换到IL2CPP才能够勾选得起ARM64)。建议x86就不要勾...原创 2020-02-24 21:17:17 · 4468 阅读 · 3 评论