这是第258篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

本期目录:

  • Lua与C#传参
  • Unity发布iOS版本出现屏幕问题
  • 安卓的View成为Unity界面的一部分
  • Unity升级导致项目启动时间过长
  • Unity中Cascaded Shadows在移动端的设置

Lua

Q:游戏中是先在Lua中String.format好再传入C#,还是在Lua里把参数传入C#,在C#里用String.format好?

即一个是Lua加载文字表,String.format后传给C#显示,另一个是C#读表,Lua把参数传给C#,再string.format使用,哪个方式更好些,或者有没有其他更好的方式?

A1:搬运群里大佬的问答:第二种比较好,因为传参越简单越好,参数可以打包传。

感谢Tao@UWA问答社区提供了回答

A2:可以参考一下这篇文章:,总之Lua与C#传参,优先考虑int、float和double等类型,其次bool、string及object等类型,同时尽可能降低交互次数。

感谢羽飞@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60e41d96e58b4719dd3e2916

iOS

Q:Unity发布iOS版本在iOS 11之后出现屏幕显示问题:半屏被压缩,另一半黑屏。

A1:直接在编辑器中设置这几个参数,不要在代码中设置这个,7p就不会出现这个问题:

Screen.autorotateToLandscapeLeft = true; Screen.autorotateToLandscapeRight = true; Screen.autorotateToPortrait = false; Screen.autorotateToPortraitUpsideDown = false; Screen.orientation = ScreenOrientation.AutoRotation;

感谢许家胜@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/5ab9ef650b827e2c0bfdd1b6

Unity

Q:加载了一个安卓的Activity,会遮挡住Unity的界面,如何让安卓的View,成为Unity界面的一部分呢?Unity界面的一部分使用安卓原生SDK的界面实现。

A:安卓混合Unity的界面,已经完成了。

https://blog.csdn.net/Yzw_92_4_11/article/details/68952529

感谢题主韩飞@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60e6caa7e58b4719dd3e296b

Editor

Q:查看了Unity的editor.log发现里面:

RefreshInfo: InitialScriptRefreshV2(NoUpdateAssetOptions)

RefreshProfiler: Total: 0.000ms

InvokeBeforeRefreshCallbacks: 1115393.587ms

OnSourceAssetsModified: 340.325ms

ImportAndPostprocessOutOfDateAssets: 1032441.185ms (82533.117ms without children)

ImportManagerImport: 82501.381ms (0.000ms without children)

有没有大佬知道这个是在处理什么东西?科学上网了也没有查到相关信息,这里看耗时就很长时间了1115393.587ms。

A:参考以下几点:

1. 检查一下项目是不是放在机械硬盘上,建议放NVME的固态上。因为高版本的数据结构更复杂了,不用固态来不及序列化。

2. 检查一下是不是开了PlasticSCM。

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60e2afece58b4719dd3e28ed

Rendering

Q:Unity的Shadow Cascade功能在移动平台中是否生效?

在场景使用了Unity自带的实时阴影,具体参数如下:

用Frame Debug观察阴影绘制过程:

Shadowmap为1024*1024,场景远处会有黑色的阴影覆盖。

当Cascade设置为2则远处阴影消失:

用Frame Debug观察阴影绘制过程:

Shadowmap还是1024*1024,但一分为二,各占1024*512。

以上是在PC上验证的,证明Cascade确实起作用。但当在Unity编辑器中的BuildSettings中切换到Android平台时,无论怎么修改Cascade的值,场景远处均有阴影,用Frame Debug观察阴影绘制过程如下:

似乎在安卓平台中这个参数不起作用,查阅Unity官服文档也并没说明Shadow Cascade不支持移动平台。

请问有同样遇到这种问题的吗?

A:Graphics设置那里需要在对应的Tier里面启用Cascaded Shadows。

感谢题主x21@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60e7fa6d038436106ddf2955

20210712

更多精彩问题等你回答~

  1. 如何实现AAB包的增量更新https://answer.uwa4d.com/question/60e80c26038436106ddf44da

  2. 关于Unity出AAB包的问题https://answer.uwa4d.com/question/60e7d522038436106ddef3d0

  3. RTS 手游技术难点

    https://answer.uwa4d.com/question/60e6629de58b4719dd3e2956

封面图来源于网络

今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)

近期精彩回顾