6

ProtoBuf-net Serializer.Serialize产生大量的GC

 2 years ago
source link: https://blog.uwa4d.com/archives/TechSharing_289.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ProtoBuf-net Serializer.Serialize产生大量的GC

  • 作者:admin
  • 时间:昨天 09:48
  • 浏览:40 次
  • 分类:厚积薄发

1)ProtoBuf-net Serializer.Serialize产生大量的GC
​2)如何快速在工程代码中每个函数注入自己想要插入的代码
3)Unity设置IL2CPP导出的Mac平台的Xcode工程中,如何通过Object-C代码反调Unity侧的C#代码
4)ShaderGraph生成的Shader在UGUI上使用的问题


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

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Q:在我们游戏中有使用到ProtoBuf的序列化,在查找性能问题的时候看到序列化的函数产生了大量的GC,如下图:

1.png

2.png

3.png

4.png

A:可以参考《Unity3D游戏GC优化总结---protobuf-net无GC版本优化实践》

感谢lanyt@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/621f2a12d83cff4676f5b924


Script

Q:如何快速地在工程代码中的每个函数注入自己想要插入的代码?有说借助Mono Ceil的,还有一些库没有开源,所以想请问有没有其他方面的资料可以参考?

A:可以参考《使用Mono.Cecil实现IL代码注入》

感谢羽飞@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6220e17380139e0c1f157aae


Script

Q:在iOS平台下,IL2CPP导出的Xcode工程中Object-C调用Unity方法是通过SendMessage实现的:

5.png

请问在Mac平台下IL2CPP方式导出的Mac工程,如何通过Object-C代码反调Unity侧的C#代码?也是通过SendMessage的方式吗?但是我没找到相关的接口。

A:用SendMessage是可以实现的,但是效率不好。可以参考我这个Object-C回调Unity。把你需要的接口,写成函数指针,在Object-C里注册,需要时做回调。

可以参考《Unity与Object-C交互》

感谢廖武兴@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6215fcede7172c2775f76e56


Shader

Q:我用URP 10.4.0和Shader Graph10.4.0建立了一个用于UGUI Image的Shader,它能在PC上正确运行,但是在手机上UV就错误了,如下图:

6.jpg

7.jpg

如下图,这样直接连一个简单的Tex2D就会出现,ShaderGraph也如下图连接:

8.png

我使用Unity 2022 URP13.1.6 SG13.1.6再次建立同样的ShaderGraph Shader在手机上是正确的,但是我暂时没有办法更换Unity版本。

A:可以参考这个视频的做法,应该是不能直接把ShaderGraph生成的Shader直接用到UGUI上的,需要做一些调整:
https://www.youtube.com/watch?v=RxW7_qgkXPo

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6221ec0d80139e0c1f16e5e2

封面图来源于:Protobuf-net Optimization
Protobuf-net无GC优化版本,另外还提供了一些无GC自定义数据结构,以及对Unity 3D中C#代码的各种无GC使用方式测试。


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

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK