- 对有一定编程经验的创作者,对逻辑比较复杂的项目,可以用自己和AI擅长的的语言写逻辑,比如说python等等。由于Udonsharp需要编译后运行,并且不怎么支持断点调试,可以使用别的语言完成逻辑这块后再翻译成U#。
- 对LLM自说自话地使用List,多维数组等情况,在自己代码已经比较完整的情况下,可以完整地给出自己没有问题的代码,和AI明说“别的地方不进行任何改动,只改动/添加XXXX”。保证原来能跑的地方不被破坏。
- 写代码时分为运算(改动变量)和视觉显示(改颜色文字,放动画,开关物体等等)两块,并对视觉显示部分进行封装(把一坨代码放进一个函数里)。这样手动网络同步就比较好写。
手动网络同步常用的大致分两种 (可根据要实现的功能做一些调整)
运算后->设本地玩家为物体Owner->RequestSerialization让大家同步Owner的数据->视觉显示的函数,在OnDeserialization里,也放视觉显示的函数。
运算后->设本地玩家为物体Owner->SendCustomNetworkEvent(目标玩家(All/Owner),RequestSerialization让大家同步Owner的数据(要同步的可以放)-> 视觉显示的函数(必须为public))
- 对于不确定是否可以使用的unity,C#方法,可以确认类暴露树。
- 在Start里使用this.transform的Find,GetChild等方法来获取一些物体的组件可以有效地减少public变量。
- 用命名空间括一下可以让你的代码好地被归类,避免与别的代码冲突。
namespace 你想给你的代码的命名空间 { 一坨using之后下面的的所有代码 }
- 一大坨需要手动编辑的,机械重复性的工作可以丢给AI完成。比如说为了伺候UdonSharp,我需要将一个二维数组/字典拆成十几个平行的一维数组。
假设我要python的字典变成U#用的数组:{a:[1,2] , b:[3,4,5], ...} -> int[] a = [1, 2]; int[] b = [3, 4, 5]; ...
当然如果数据量比较庞大,也可以让AI写批处理脚本或编辑器脚本来解决。
(以上一部分为自己感悟,一部分为官方文档,社区交流的所得)
大家还有哪些自己的收获和技巧分享呢?