黄岛网站建设公司,网站链接是什么,客户管理软件crm排名,自己建网站 知乎这是第151篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题#xff0c;建议阅读时间10分钟#xff0c;认真读完必有收获。UWA 问答社区#xff1a;answer.uwa4d.comUWA QQ群2#xff1a;793972859(原群已满员)本期目录#xff1a;如何规划UI… 这是第151篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题建议阅读时间10分钟认真读完必有收获。UWA 问答社区answer.uwa4d.comUWA QQ群2793972859(原群已满员)本期目录如何规划UI图标图集如何在Unity中不使用Native DLL实现进程间通讯如何通过??运算符给物体添加组件摄像机跟随人物被建筑物遮挡半透方案如何通过脚本向Timeline增加关键帧UIQ道具图标可能有几百上千个如果打到同一图集里大小都有2048*2048实际游戏过程中有额外的内存浪费。按类型拆分也不太好新手各类道具各一个所有类型的图集就都引用了一遍跟打到一个里没太大区别。如果按等级段来规划可能会好一点但是对于像商城或者某些特定UI上展示的图标很可能就不是同一个等级段的也会造成引用好多个图集的情况。如果按常用或者不常用来分图集得要策划全程来跟进这块内容感觉也很容易出问题。或者直接对这大量的图标都不打到图集都是散图这样虽然不会有太多内存浪费但渲染效率就低了。请问下有没有比较好的方案来处理这个问题A1、如果图量远超单屏显示量那比较实际的是自己实现动态图集也就是图标是散图在运行过程中根据需求实时拼装成大图可以用Render to Texture实现。2、对于大多数游戏如果不是常驻画面的界面以现在机器的性能忍受一下DrawCall也非不可。感谢招文勇UWA问答社区提供了回答欢迎大家转至社区交流https://answer.uwa4d.com/question/5c70038e2b3589332f1a4adeScriptQ如何在Unity中不使用Native DLL实现进程间通讯在Unity中实现IPC遇到了一些问题主要是.Net 3.5 没有System.IO.MemoryMappedFiles 这个类而我在制作Unity Editor插件时要用 File mapping的方式实现 IPC需要普遍适配各个项目必须兼容.Net3.5这样似乎除了Import C编写的DLL之外就没有什么好的方法了但插件又是纯Editor在用的所以不想因为这个原因导致游戏无关的DLL可能被打到Build里所以想请教一下有没有兼容.Net 3.5的共享内核内存实现IPC的方法。A11、纯C#可以socket做IPC很通用且跨平台。2、用Native DLL也可以选择是否打进包里至少现在版本Unity可以。感谢招文勇UWA问答社区提供了回答A2一些和底层比较近的功能还是自己写Native插件吧可以通过DLL的Import Setting和宏定义避免你说的问题。PSUnity对一些非渲染功能的封装大多效率不高也不太可控其他诸如Camera、Microphone等等。感谢志鹏ZipperUWA问答社区提供了回答欢迎大家转至社区交流https://answer.uwa4d.com/question/5c6fd6142b3589332f1a4addScriptQ为什么通过??运算符给物体添加组件添加不上?public class PlayerMoveTest : MonoBehaviour{ CharacterController controller;private void Awake(){ controller transform.GetComponent() ?? gameObject.AddComponent(); }} public class PlayerMoveTest : MonoBehaviour{ CharacterController controller;private void Awake(){ controller transform.GetComponent();if (controller null) { controller gameObject.AddComponent(); } }} 如上面的代码第一段是不行的controller 显示为null而第二段是可以添加上组件的请问这是为什么对于??运算符难道不是??前面的为null就会执行??后面的表达式吗?A1我试了下public class PlayerMoveTest : MonoBehaviour{ CharacterController controller;private void Awake(){ controller transform.GetComponent();if (controller null) { controller gameObject.AddComponent(); } }} 把上面代码反编译 if (GUI.Button(new Rect(100f, 100f, 200f, 80f), Test) (Object)base.transform.GetComponent() (Object)null) { base.gameObject.AddComponent(); }if (GUI.Button(new Rect(200f, 200f, 200f, 80f), Test2) (object)base.transform.GetComponent() null) { base.gameObject.AddComponent(); } 可以看出2段代码是不一样的第一个比较的是UnityEngine.Object类型第二个比较的是System.object类型。再写段代码测试下 var c1 (object)base.transform.GetComponent();if(c1 null) Debug.Log(1);var c2 (Object)base.transform.GetComponent();if(c2 (Object)null) Debug.Log(2);if(c2 null) Debug.Log(3); 输出结果是2和3。断点调试下这几个值原因是UnityEngine.Object类型重载了运算符所以null和null认为是相等的而用System.object类型比较的时候认为是不相等的。感谢deviljzUWA问答社区提供了回答A2看了一下发现此null非彼null其实在contor transform.GetComponent()执行这句的时候已经赋值了只不过赋的值是null看一下打印的就知道两个null有什么区别了。再加一句当我打印contor的Type时在one那里会报对象的引用未设置为实例而在two的时候会打印他的类型也就是说 ?? 操作符左边必须是为未赋值的变量时才会执行右边的例子看下面的代码b最后打印的是vc是我定义的一个未赋值的string c。感谢MarcoUWA问答社区提供了回答欢迎大家转至社区交流https://answer.uwa4d.com/question/5c7101bc63826a332ad9966cScriptQ摄像机跟随角色的时候被建筑物遮挡想让建筑物半透这个时候需要射线检测但是因为性能问题场景物体不允许添加Collider组件 用纯Shader写的时候效果总是有些问题想请教大神们有没有其他方案。A1一种做法是场景做的时候用Box Collider做物体形状的近似来进行物理碰撞的检测不知道你们不允许使用添加Collider组件是不是也不允许用这种方式。不知道你纯Shader编写是什么思路我感觉单纯Shader里是没办法处理这个需求的。不知道有没有更好的方案在比较通用又不做很tricky的处理的情况下感觉物理反而是比较直接、高效的方式。PS如果是2.5D的视角相机不会俯仰的情况下可以预计算一份2D的数据在Runtime做检索用不过这里面有限制和问题我没这么做过这里只是提一句。感谢贾伟昊UWA问答社区提供了回答A2在Unity 3D里面确实没有想到比Box Collider来做成场景物体的近似形状来进行物理检测更直接的办法了。贾伟昊提到可以预计算一份数据做Runtime检测所用我想起来在Quake系列里面场景的渲染和物理碰撞检测数据是预先烘焙进了BSP树里面的Quake在Runtime阶段的碰撞检测是基于BSP的。感谢张锐UWA问答社区提供了回答欢迎大家转至社区交流https://answer.uwa4d.com/question/5c74f9e163826a332ad996e5TimelineQ在使用新的Timeline时发现没有手动添加关键帧的选项/按键也没有发现相关的API那应当手动如何添加关键帧呢先谢过各位~A在编辑器中可以通过鼠标拉动Clip的两边来在Clip的头部或者尾部添加关键帧并且编辑器中会显示出当前操作中/-了多少帧。如果是想Runtime向built-in的轨道添加关键帧目前Unity确实没有提供相关的接口。可以通过脚本来实现自定义的Track/Clip在脚本中控制Timeline的Playhead停留在固定的时间或者是跳到指定的时间。具体需要自己实现TrackAsset、PlayableAsset和PlayableBehaviour。其中实现TrackAsset用于提供给外部的Mono脚本来操作Track。实现PlayableAsset用于提供自定义的Clip用于为Track提供相关数据。实现PlayableBehaviour实现控制Timeline播放的控制逻辑。感谢张锐UWA问答社区提供了回答欢迎大家转至社区交流https://answer.uwa4d.com/question/5c6666a92b3589332f1a4a34今天的分享就到这里。当然生有涯而知无涯。在漫漫的开发周期中您看到的这些问题也许都只是冰山一角我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入也许你的方法恰能解别人的燃眉之急而他山之“石”也能攻你之“玉”。官网www.uwa4d.com官方技术博客blog.uwa4d.com官方问答社区answer.uwa4d.com官方技术QQ群793972859(原群已满员)(封面图来源来源于网络)UWA DAY 2019完整议题公布近期精彩回顾【博物纳新】Impostor Baker开源库评测【厚积薄发】按钮穿透点击实现方式【厚积薄发】如何能避免动态字体Font Texture过大【万象更新】看完性能简报想不优化好都难