Advanced Search
Search Results
36 total results found
实验性药剂:为 U# 添加更多编译器优化——UdonSharpOptimizer
如何对场景内的 UdonBehaviour 进行 Profiling(性能分析)
作者跑路了,所以你要自己悟一下这个怎么用: 在 UdonBehaviour 的 LoadProgram() 的合适位置插入以下代码。 _managedUpdateProfilerMarker = new ProfilerMarker($"{gameObject.name}.Update()"); _managedLateUpdateProfilerMarker = new ProfilerMarker($"{gameObject.name}.LateUpdate()"); _managedFixedUpda...
避免耗时操作或缓存其结果,如果不能,请搞快点
在开始写你的的一个网络同步脚本前,请至少通读一遍官方文档,不要问任何 LLM(AI)
不要问 LLM(AI)有关于 U# 的任何事情
现阶段有关于 U# 的资料太少,LLM 对 U# 一无所知。即使是拥有海量资料的非常成熟的技术栈,LLM 也会有很大的可能出现胡言乱语(幻觉)的情况。更何况几乎没什么资料的 U# 呢?
一个优秀工程师的基本素养:勤查文档,好好说话
给 U# 做版本控制的正确姿势
其实是 Mono 的缺陷:工程路径不要有非 ASCII 字符
事实上 Unity 对非 ASCII 字符支持良好:你可以在 GameObject、Prefab 中使用各种语言,甚至是 C# 脚本。但有一个例外,那就是 Unity 使用的 .Net 运行时 Mono。事实上 Mono 一直都对各种字符串编码支持不佳,例如 https://github.com/mono/mono/issues/20968,https://github.com/mono/mono/issues/7117,而且伴随着 Mono 维护的停止,这些问题都无法得到修复(我猜就算有维护也不会有人修的 ;) ...
OnAudioFilterRead 的陷阱
我知道这很丑:请把符号定义到 Project Global 里,因为 U# 编译器不尊重程序集定义里的符号定义
眼见不一定为实:U# 在 Unity Editor 中的代理对象
TL;DR U# 脚本对于 Unity 来说也是有效的 C# 脚本,也就是 Unity 依旧会给 U# 脚本生成对应的 Behaviour。但是这些 Behaviour 并没有实际的功能。在 U# 的环境中这些 Behaviour 都是作为“代理对象”使用的,也就是所有对这些 Behaviour 上的用户方法字段的调用和修改都会把转发到实际的 UdonBehaviour 上(被设置为隐藏)。 在一部分情况下(比如说在运行时实例化 UdonSharpBehaviour),代理对象的状态会和 UdonBehavio...
狸猫换太子:你以为我是 Enum,其实我是 Int 哒!
避免使用 partial 关键字,除非你和你的用户都不需要版本管理
最高指令:别装 VRChat Package Resolver Tool
我知道你有很多问号,但是听我的,别装。 // TODO 这里应该有解释,但是真有人用这个吗?想要用的应该自己去发现为什么,这是你应得的奖励 :(
别用 Enum,尽管会让你的代码更好看
别听标题的,你得用 Enum。但是你要注意以下所有的问题: 不要指望用户定义的 Enum 的 ToString() 能正常工作 public enum UserEnumType { One, Two } UserEnumType enumValue = UserEnumType.One; Debug.Log(enumValue.One) // Output: 0 (????!) 不要把 Enum 类型转换和操作符/方法参数(可能还有其他的)写在一起 注:也可能有其他 U# 编译器不会进...
不要 public 你的内部实现方法,如果你不得不 public,请在方法名加入 _ 作为前缀
public 方法会被导出到符号表,这可能会产生(微乎其微的)性能影响。 public 方法默认可以被网络 RPC 或者 SendCustomEvent() 调用,如果你不想有奇怪的脚本或者破解客户端瞎搞,请避免 public。 如果你不得不 public(比如说给其他脚本使用的公开 API),请加 _ 作为方法名称前缀。