Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UdonSharp;
- using UnityEngine;
- using TMPro;
- using VRC.SDKBase; // Core SDK functionality
- using VRC.SDK3; // Main SDK features
- using VRC.SDK3.Components; // VRCPickup, VRCUrlInputField
- using VRC.SDK3.Data; // DataToken/DataDictionary
- using VRC.SDK3.StringLoading; // String downloads
- using VRC.SDK3.Video.Components.Base; // Base video player
- using VRC.SDK3.ImageLoading; // Texture downloads
- using VRC.Udon.Common.Interfaces; // Network events
- using VRC.SDK3.Networking; // RPCs
- using VRC.SDK3.Validation; // Validation attributes
- // Note: Some namespaces like VRC.SDK3.Experimental are intentionally omitted
- // as they're unstable or editor-only
- [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] // From VRC.SDKBase
- [RequireComponent(typeof(VRCPickup))] // From VRC.SDK3.Components
- public class VRCNamespaceDemo : UdonSharpBehaviour
- {
- // ========== VRC.SDK3.Components ==========
- [SerializeField] private VRCPickup _pickup;
- [SerializeField] private VRCUrlInputField _urlInputField;
- // ========== VRC.SDKBase ==========
- [UdonSynced] private int _syncedValue;
- private VRCPlayerApi _localPlayer;
- // ========== VRC.SDK3.Data ==========
- private DataDictionary _dataDictionary = new DataDictionary();
- // ========== VRC.SDK3.StringLoading ==========
- [SerializeField] private VRCUrl _jsonUrl;
- private string _loadedJson;
- // ========== VRC.SDK3.Video.Components.Base ==========
- [SerializeField] private UnityEngine.Video.VideoPlayer _videoPlayer;
- // ========== VRC.SDK3.ImageLoading ==========
- private Texture _downloadedTexture;
- private VRCImageDownloader _imageDownloader;
- // ========== UI Elements ==========
- [SerializeField] private TextMeshProUGUI _statusText;
- [SerializeField] private Renderer _displayRenderer;
- // ========== VRC.SDK3.Validation ==========
- [RecursiveMethod] // Validation attribute
- private void ValidateData()
- {
- // Method content would go here
- }
- void Start()
- {
- _localPlayer = Networking.LocalPlayer; // From VRC.SDKBase
- InitializeDataStructure();
- }
- // ========== VRC.SDK3.Data Demo ==========
- private void InitializeDataStructure()
- {
- _dataDictionary.Add("playerCount", new DataToken(0));
- _dataDictionary.Add("isActive", new DataToken(false));
- // WARNING: Complex nested structures impact performance
- DataList colors = new DataList();
- colors.Add(new DataToken("red"));
- colors.Add(new DataToken("blue"));
- _dataDictionary.Add("colors", new DataToken(colors));
- }
- // ========== VRC.SDK3.StringLoading Demo ==========
- public void LoadJsonData()
- {
- VRCStringDownloader.LoadUrl(_jsonUrl, (IUdonEventReceiver)this);
- }
- public override void OnStringLoadSuccess(IVRCStringDownload result)
- {
- _loadedJson = result.Result;
- _statusText.text = "JSON loaded!";
- // WARNING: Large JSON files may cause lag
- if (VRCJson.TryDeserializeFromJson(_loadedJson, out DataToken token))
- {
- ProcessJsonData(token.DataDictionary);
- }
- }
- // ========== VRC.SDK3.Networking Demo ==========
- [VRCSDK3.Networking.UdonSynced]
- private int _networkedValue;
- public void IncrementNetworkedValue()
- {
- if (!Networking.IsOwner(gameObject))
- Networking.SetOwner(_localPlayer, gameObject);
- _networkedValue++;
- RequestSerialization();
- }
- public override void OnDeserialization()
- {
- _statusText.text = $"Synced value: {_networkedValue}";
- }
- // ========== VRC.SDK3.ImageLoading Demo ==========
- public void DownloadImage(VRCUrl imageUrl)
- {
- _imageDownloader = new VRCImageDownloader();
- _imageDownloader.DownloadImage(imageUrl, _displayRenderer.material, _localPlayer);
- }
- // ========== VRC.SDK3.Video.Components.Base Demo ==========
- public void PlayVideo(VRCUrl videoUrl)
- {
- _videoPlayer.url = videoUrl.ToString();
- _videoPlayer.Play();
- }
- // ========== Cleanup ==========
- void OnDisable()
- {
- if (_imageDownloader != null)
- {
- _imageDownloader.Dispose();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement