关于 UdonSharp 你不得不知道的 {placeholder} 件事
UdonSharp 交通安全小课堂
前言/阅读顺序推荐
注:Crash 同时有“崩溃”和“车祸”的意思 欢迎来到 UdonSharp “交通安全小课堂”。无论你是已经有一定基础的 U# 开发者还是刚刚入门 U# 的开发者,这场“小课堂”都可以为你提...
UdonSharp 的前世今生
你好,来自现实的旅人 ${ LocalPlayer.displayName } 欢迎来到 UdonSharp 的世界。 // 此处应该有饱含人文关怀的序以安抚被 UdonSharp 伤透了心...
你应该知道:U# 的缺陷
其实是 Mono 的缺陷:工程路径不要有非 ASCII 字符
事实上 Unity 对非 ASCII 字符支持良好:你可以在 GameObject、Prefab 中使用各种语言,甚至是 C# 脚本。但有一个例外,那就是 Unity 使用的 .Net 运行时 ...
确保你的 UdonSharp Assembly Definition 文件名和 Assembly Definition 的名称一致
我知道这很丑:请把符号定义到 Project Global 里,因为 U# 编译器不尊重程序集定义里的符号定义
避免使用 internal 可见性
如果你使用 internal 关键字,你的方法或属性可能会随机无法导出,而且不会有任何错误提示。 截止到 VRCSDK 版本 3.8.2,这一问题一直没有得到修复。在 VRCSDK 解决这个错...
假设所有在运行时被实例化的 UdonBehaviour 都有丢失引用的可能
眼见不一定为实:U# 在 Unity Editor 中的代理对象
TL;DR U# 脚本对于 Unity 来说也是有效的 C# 脚本,也就是 Unity 依旧会给 U# 脚本生成对应的 Behaviour。但是这些 Behaviour 并没有实际的功能。在 ...
OnAudioFilterRead 的陷阱
狸猫换太子:你以为我是 Enum,其实我是 Int 哒!
你应该知道:你的缺陷
一个优秀工程师的基本素养:勤查文档,好好说话
不要问 LLM(AI)有关于 U# 的任何事情
现阶段有关于 U# 的资料太少,LLM 对 U# 一无所知。即使是拥有海量资料的非常成熟的技术栈,LLM 也会有很大的可能出现胡言乱语(幻觉)的情况。更何况几乎没什么资料的 U# 呢?
除非你愿意和陈年老 bug 玩,否则尽量更新你的 UdonSharp(SDK)到最新版本
比如说不能给用户自定义 Enum 类型的方法参数指定默认值,这会导致编译器崩溃。 待补充....
虽然但是这是你的责任:不要滥用 *Update() 事件
一个简单但是很多人(就我买过的 U# 资产而言)都没有意识到的事实:很多逻辑其实不需要每帧都执行一次!多么的不可思议! 也许我应该展示一下各种现实案例的只使用 *Update() 的实现和使用...
尽可能不要在 *Update() 事件里分配内存
TL;DR 我还没验证过以下事实是否完全正确,因为需要对 UdonVM 进行逆向工程。 在 Udon 中,如果你在 *Update() 事件中创建新的对象,或者把 struct 塞进一个新的...