跳转到内容

创作者视角:你的世界现在会跟人说话了

约 6 分钟 难度:新手 创作者视角

第四部开头,房间是张照片:站进去能看,光也调过,气氛也对,但什么都不会发生。门是装饰,按钮是装饰,灯只能用 Inspector 切换。玩家进来,房间不知道。

第四部结束,那张照片开始有声音了:按一下灯亮,走进咖啡角音乐响起。桌上小球能抓起来扔出去,墙边椅子能坐下来。对面墙上一面默认关着的镜子可以打开,门把手按一下就推门进去。

会回应人的房间,跟单纯能站进去看的房间,是两件事。

到第三部结束时,「我想做一个 VRChat 世界」这件事的拼图大致拆成了:

  • 空间和外观:第二部的物体、组件、Prefab、材质、光。
  • 能写一点代码:第三部的 C# 基本块、UdonSharp 的脾气。

第四部添上了第三块:让人和空间发生关系

这三块凑齐之后,单人能跑的 VRChat 世界,原则上已经能做出来了。剩下的更大块(多人同步、空间感设计、性能、发布维护)是把这个原则上能做出来的世界做扎实做大。但底层的「动手能力」在这里基本到位。

第三部结尾说过:学完一点代码后进别人的 VRChat 世界,看东西的方式会多一层「这个怎么实现的」。第四部之后这一层会突然变得很具体。

之前进一个会动的世界,看见门自己开了、按一下灯亮了、桌上球能抓起来,能拆解的工具不在手里。第四部之后,这些都能开始拆:

  • 那扇会自动开的门:八成是个 Trigger Collider 加 OnPlayerTriggerEnter,再推一段 Animator 动画。
  • 那盏走过去会变颜色的灯:肯定是 OnPlayerTriggerEnterLight.color,可能还有个 Stay 计时让颜色循环。
  • 桌上抓起来会发声的瓶子:VRC Pickup 加一个 OnPickup 里调 AudioSource.Play()
  • 一个进去后视角自动锁住的电影座位:VRCStationDisable Station Exit,可能还接着一段定时退出。

不是每一处都猜得准,但拆解的工具已经在手里。这件事在第二部讲过:把神秘感换成「组件 + 脚本 + 引用槽」几个具体名词,对创作者是好事。看不懂的「魔法」少了,能复用的「模式」多了。

心里那个画面,开始有「接缝」了

Section titled “心里那个画面,开始有「接缝」了”

第二部末尾的创作者视角让把心里的画面拆成「物体清单」。第四部走完,那份清单可以再细一层。

举一个具体例子。心里有个画面:「朋友走进我做的咖啡馆,一进门头顶有一盏暖灯亮起来,吧台传来轻轻的爵士乐。玩家走到沙发前能坐下来,对面墙上一面镜子默认关着,需要的话点一下能开。」

第二部走完,物体清单已经有了:吧台 Cube、沙发 Cube、镜子 Quad、暖光 Point Light、地面、墙、天花板、桌子、椅子。

第四部之后能再拆一层「接缝」:

  • 「进门头顶暖灯亮起来」:门口一块 Trigger Collider,挂 OnPlayerTriggerEnter,控制头顶 Point Light 的 enabled。需要 if (player.isLocal) 过滤。
  • 「吧台传来轻轻爵士乐」:吧台 AudioSource,Spatial Blend = 1 让远了听不见。可以是常播,也可以挂在另一块小 Trigger 上让玩家走到吧台时才响。
  • 「沙发能坐下来」:沙发上一个 VRCStation + 一个 EnterPoint。
  • 「镜子默认关着,点一下能开」:镜子是 inactive 的 Quad + VRCMirrorReflection,墙边一个开关 Cube 挂 Interact 调 SetActive。

每一项都已经知道大概要挂什么组件、写哪几行脚本。从模糊画面到能动手的清单,距离一下子缩短了。

不是说画面里所有东西都做得完。性能、美术、声效、多人同步,都还有很长的路。但心里画面里那部分要动的东西,对应到组件清单基本能一一拆出来。剩下都是工程量。

单人能跑还差一段路才「上得了线」

Section titled “单人能跑还差一段路才「上得了线」”

差距别假装看不到。第四部所有交互都是按「单人本地」做的。单人能跑,跟「邀请朋友进来一起玩」中间还有一道坎。

第四部里那扇按一下能开的门,单人版本完全工作。但拉朋友进来按一下:他那边门没动,自己这边门开了。世界看起来「撕裂」了。

镜子开关也一样:本地客户端把镜子 SetActive(true),朋友那边镜子还是关着。

这不是 bug,是 VRChat 网络模型的默认行为:每个客户端各跑各的脚本,状态变化不会自动广播。第六部专门补这一段,会用同一扇门做例子,添几行同步字段就能让所有人看到同一个状态。

工具是工具,重要的还是那个画面

Section titled “工具是工具,重要的还是那个画面”

学到这里很容易掉进一个陷阱:把脚本能力当成做世界的核心,开始堆机关。每一个角落都想塞一个 Pickup、每一面墙都想挂一个 Trigger。

机关多不等于世界好。

VRChat 里许多让人愿意泡半小时的小屋,机关其实少得惊人:一个固定播的背景乐、一面镜子、几张椅子、一只能抓起来的杯子。空间气氛、光、材质、节奏占了体验的大半。机关只是在恰当的位置出现「哦这里能动」的小惊喜。

这件事在第二部那次创作者视角里铺过:心里那个画面是起点。技术只是把它落地的工具。

第四部多出来的能力让画面里那部分「应该会动的东西」能动起来。但如果心里那个画面本来就没几样要动的,硬塞二十个机关只会让世界变得喧闹,反而离原本想要的氛围越来越远。

按需要塞机关。每一个机关都该回答「它在为这个世界服务什么」。这条问题问下去,第四部学的那些组件不会被滥用。

走到这里第一部到第四部就走完了。手里大概会有:

  • 一个能站进去的最小世界(第一部)。
  • 一份对 Unity 工作台的全貌认知(第二部)。
  • 看得懂、敢改、知道大致怎么写一点 UdonSharp 的能力(第三部)。
  • 一盒能复用的小机关:按钮、Trigger、Pickup、椅子、镜子、传送、门(第四部)。

第五部站在岔路口。「什么样的世界」决定接下来要把时间砸在哪条线上。

想做休闲世界的人,下一步该深挖空间、光、声音、材质、舒适感这条线(第七部)。机关知识够用了,氛围才是核心。

想做游戏世界的人,下一步该硬着头皮啃多人同步(第六部)。光是当下手里那点单人交互,规则跑不起来。

想做展览或叙事世界的人,下一步该多花心思设计动线和节奏(第七部)、可能再补一点 UI 反馈(第七部 UI 那一章)。

第五部不教技术,把这几条主路简单铺一下。看完第五部能回答:「我接下来这一段要把时间砸在哪。」

时间永远不够。把它花在自己真在做的那条路上,比平均铺开撒到所有路上有用得多。