Advanced Search
Search Results
19 total results found
Udon Graph :基础操作与信息
欢迎来到Udon Graph UdonGraph是Vrchat制作的,Udon Behaviour可以加载的两种编程格式的一种,全名Udon Node Graph(Udon节点图),正如名称所说。UdonGraph是通过节点图来实现编程的,就像是下面这样…… 如图,这段代码的意思是:当玩家交互时(Event Interact事件)向控制台输出Message(Hallo World) 很简单,对吧,UdonGraph就是这样的东西,让我们一起走入UdonGraph的世界,探寻他的一切…… 接口 您可...
Udon Graph 基础教程-脚本数据互相交换以及互相触发以及自我延时循环
大家好,欢迎来到Udon Graph基础教程,本期我们来讲讲多个Udon脚本之间的数据交换问题在Graph的解决方式。 数据交换: UdonGraph提供了一个名为ProgramVariable的功能,该功能一共有三个模块,分别是Set ProgramVariable,Get ProgramVariable ,Get ProgramVariableType 这两个的作用分别是:获取指定Udon脚本的指定参数,设置指定Udon脚本的指定参数,获取指定Udon脚本的指定参数的参数类型 Set Progr...
制作一个用于开关物体/组件的按钮
本期咱们来制作一个可以开关物体的按钮 PART1:程序目标设计 这个程序十分简单,我们的目标就是—— 开关一个物体 PART2:设计参数 EVENT:事件选择 既然是一个按钮,那么我们的选择一定是当玩家按下扳机,或者按下鼠标左键后触发,VRchat为我们准备了一个Event事件—— Event Interact 这个事件会在玩家交互后相应,并且开始执行后续的流 Variables:参数选择 在参数上,我们需要一个Pulic的接口来链接我们需要开关的东西,比如GameObject,或...
制作一个用于白名单/黑名单系统
欢迎来到麦哲伦的udon graph实战教程,本期专栏将带大家手把手设计一个本地白名单系统。那么事不宜迟,让我们马上开始! PART1:程序目标设计 黑白名单系统的目标很简单,分为以下几点: 名单 确认本地玩家是否是名单中的人 如果是-执行操作,如果不是-略过 至于具体对名单人执行什么操作,我们可以通过将customEVENT发送到下一个udon,让其他的udon来执行具体操作,而黑白名单系统只需要做好自己的事情——确认玩家是否存在于黑白名单中 PART2:设计参数 ...
制作一个用于收集物状态统计系统
本期我们来制作一个收集物统计系统 相信制作过游戏地图的朋友们都知道,收集物是游戏的一个很重要的元素。本期我们来制作一个完整的收集物系统。 第零步: 首先需要为可收集物制作一个脚本,通过“开关”自己来实现可收集的感觉。 比较简单,直接放图。 这个脚本的效果就是将自身关闭。后面我们也是通过Active状态来确认收集物是否被收集。 收集物统计系统 PART1:程序目标设计 这个我们需要这个系统输出以下信息 1:收集物名单(gameobject[]) 2:已收集数量(int) 3:未...
UdonGraph基础教程—int与Float使用速查表
int与Float使用指南 欢迎来到本期UdonGraph基础教学,本期将会为各位介绍Int与Float的所有可以使用的Graph组件接口 您一定很好奇为什么要将这两个一起讲?实际上这两个作为纯数字的数据类型,其在接口方面也有极高的相似性,如下图: 根据统计,在int的27个组件,Float的30个组件中,总共有20个组件的功能与用法是相同的,这也是我为什么要将他们放置在一起来讲,本文将会分为三部分,第一部分介绍两者共有的组件,一共20个,第二部分讲述int独有的组件,一共七个,第三部分讲述Float独有...
UdonGraph 基础教程:Event事件速查表
本期来盘点UdonGraph中所预设的所有事件的触发条件以及对应名称,本文将会按照官方文档中记载的顺序进行讲解,如果需要阅读原文请点击https://docs.vrczh.org/udonsharp.docs.vrchat.com/events#udon-update-events跳转至官方文档。 请善用Ctrl+F的网页搜索功能 UdonGraphEvent事件速查 Udon Events:Udon独有事件 本类下的事件由来自UdonSharpBehaviour,是Vrchat独有的事件类...
Udon Graph 基础教程-VRCJson使用指南
本期是VRCJson在UdonGraph的使用方法,我们可以通过DownloadString来下载JSON文件,再通过下文的方法来转化成DataToken,并使用DataToken来输出参数,本文将会详细解读如何使用Graph来完成这个过程。 UdonGraph:VRC JSON https://creators.vrchat.com/worlds/udon/data-containers/vrcjson/ 如何序列化/反序列化一个JSON文件 首先我们需要明白,VRC的Json文件以及后续的DataT...
Udon Graph 基础教程-简单的网络同步
本文所讲的网络同步部分只是基础中的基础!如果要深入研究请观看官方文档https://creators.vrchat.com/worlds/udon/networking/ 本期依然会以官方文档为基础进行讲解,并且在容易产生疑问的地方安插讲解——如果你还是不懂,请私信,这就是绝对是写的人的问题而不是你的问题! VRC Graph:简单的网络同步 大家好,欢迎来到本期UDON Graph网络同步篇章,本篇将会以简单的方式来讲述一些关于网络同步的故事…… 概述:网络原理 Udon 中用于联网的三个主要概...
Udon Graph 基础教程:同类型参数的储存与转移利器——Array[]数组
本章节将会教最基础的Array使用方式,更多使用方式请搜索unity-数组教程 Udon Graph:Array 基础认知 什么是数组: 数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。它是最简单的数据结构之一,大多数现代编程语言都内置数组支持。 为何使用数组存储一堆变量 与单独为每一个元素声明一个变量名相比,我们可以使用数组的索引值访问数组中的每一个元素。 例如: 你现在制作了一个游戏地图,你需要为这个地图制作了一个分数系统 我们需要实现一个系统来存...
VRchat虚拟导播系统V1.0-使用指南(全篇)
VRchat虚拟导播系统V1.0 本系统正在进行更新,本教程可能过时。 概述(What it This) 欢迎使用VRchat虚拟导播系统 本系统全名称为“VRChat Technical Director system(下称“本系统”)” 本系统的开发者为:“ARK-Magellan”唯一认证为QQ:2712509058。 本系统对应的Demo地图为:wrld_fba1d5b1-5596-4316-b623-a5c2535b7641 需要讲解请联系开发者 本系统是一款通用的集成了相机控制与相机切换...
特殊篇:主程序事件触发速查表
发送控制信号 此脚本为控制台核心,用于与相机系统进行交互,引导相机系统进行数据更新以及状态切换 重要参数 public GameObject[] System; 此参数为相机系统合集,参数表示相机系统部分 private RenderTexture[] CameraRender; 此参数为初始化的相机系统RenderTexture合集,如果需要调用获取请延迟一帧后调用。 重要事件 InteractStart() 此事件为触发指令,触发该事件后系统将会将所有参数进行转发。 ...
VRChat Udon DataToken&VRCJson 食用指南
VRChat Udon DataToken&VRCJson 食用指南 VRC JSON VRChat Json官方解释链接 概念解释 Json——数据格式 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,我们可以通过VRCJson反序列化来将其转换成DataToken,相对的也可以通过序列化为符合Json标准数据格式的Json文件。 DataToken——数据令牌 数据令牌会储存数据——每个 token 存储一个且仅存储一个变量。一般我们不会...
一、用 Toggle 替代 Button 来实现按钮传参
还在傻乎乎给每一个按钮配一个Udon脚本来实现传参?邪修教你用Toggle替代Button来实现按钮传参 众所周知,在 VRChat 的 Udon 开发中,按钮默认只能通过 SendCustomEvent 方法向 UdonBehaviour 发送无参事件。但实际开发中,我们常需按钮携带参数 —— 最典型的场景就是 “批量相同功能的按钮”(如道具选择、场景切换按钮),需要通过参数(如按钮 ID)确定具体是哪个按钮触发了事件。 我个人选择的方案是,结合 Toggle 组件与 Udon 代码:在 Toggle 被触发...
二、请在变量改变时通知其他的需要这个变量的脚本,而不是让他们在Update中不断检查
还在滥用Update来获取其他脚本变量?邪修助你在实时和性能之间取得平衡。 这个问题的核心需求其实很明确 —— 我们需要尽可能实时地获取其他脚本的变量信息。比如在 UdonChips 钱包系统中,若要为其开发全新插件,就必须实时更新钱包余额,才能确保消费、查询等关联模块正常运行。对此,UdonChips 的官方解决方案是:在Update方法中,通过每一帧检查钱包脚本的指定变量与本地备份是否存在差异,以此实现变量的实时同步。 这种方案虽能满足基础需求,但高频的帧级轮询会带来不必要的性能开销。为优化性能表现,我对该...
三、使用简易对象池优化生成组件时的性能
停下你每次都重新生成的代码,加入一个简易的对象池来优化生成组件时的性能。 在开始这篇 “邪修” 风格的方法教程前,我们先补充一组关键数据: Unity 中生成一个Prefab 实例,通常需要消耗约 1ms 时间; 而在此基础上,若该 Prefab 挂载了 Udon 脚本,Udon 为其生成对应的Udon 虚拟机时,还需额外消耗约 1ms 时间。 这组数据大家可自行测试验证。不难看出,生成 Udon 虚拟机的性能开销相当显著 —— 但实际开发中,很多场景(比如少量、高频复用的简单对象,如临时弹窗、交互...
4.将复杂数学运算卸载到Animator中来实现多线程计算
已知Udon是一款单线程低效率的编程语言,这种低效率同时也体现在Udon对于复杂数学运算上。如果仅仅只是加减乘除的话可以忽略不计,但是若是计算傅利叶变换,贝塞尔曲线等复杂数学的时候,我们必须要进行优化。 好在,Udon允许我们与animator进行交互,那么我们就可以将数学运算卸载到animator中并且在等待animator运行完毕后获取到运行结果。 其优点在于: 1:多线程运算,量大管饱 2:运算速度更快 缺点在于: 1:需要等待一段时间后才可以拿到运算结果 2:十分复杂,在运用和设计上...
如果你需要在网络中传递玩家名称,请答应我不要直接传string的……
在你正式开始网络同步之前——你最好知道的一些事
这一篇东西记录了我【ARK-Magellan】在学习网络同步如何写这个问题的时候遇到的所有问题,这篇文章的所有知识有些来自日本或者其他网站,这篇文章只是将他们和在了一起……但是这些真的很重要,所以我希望你认真看完并且遵守其中的一些部分。 一切的开始:你必须要保证你已经会写本地的逻辑了再来考虑学习网络同步——但是在你从创建脚本开始,就应该考虑号网络同步的问题。 因为将一个网络同步变成本地脚本,只需要将同步状态改为None,但是把一个本地脚本变成网络同步脚本,无异于重新写一遍…… 很好你已经准备好了 ...