// HCNネットワーク VRCニュース掲示板(UdonSharp) // ワールド内の TextMeshPro に、HCNネットワークの公開API(プレーンテキスト)を表示します。 // 使い方: https://hcnnetwork.hachune.space/vrc-news/udon/ // ※ VRChat・BOOTH 非公式。この部品は、実機での動作確認ができていません(試した結果は、お問い合わせから教えてください)。 // ※ プレイヤー側の設定「信頼されていない URL を許可」が有効なときだけ、表示されます。 using UdonSharp; using UnityEngine; using TMPro; using VRC.SDK3.StringLoading; using VRC.SDKBase; using VRC.Udon.Common.Interfaces; [UdonBehaviourSyncMode(BehaviourSyncMode.None)] public class HcnNewsBoard : UdonSharpBehaviour { [Header("読み込むURL (Inspectorで入力。例は下の一覧)")] [SerializeField] private VRCUrl url; [Header("表示先 (日本語が出るフォントを割り当てたTMP)")] [SerializeField] private TextMeshProUGUI label; [Header("再読み込みの間隔(分)。5分より短くしないでください")] [SerializeField] private float refreshMinutes = 10f; [SerializeField] private string loadingText = "読み込み中…"; [SerializeField] private string errorText = "読み込めませんでした"; void Start() { if (label != null) label.text = loadingText; Load(); } public void Load() { VRCStringDownloader.LoadUrl(url, (IUdonEventReceiver)this); SendCustomEventDelayedSeconds(nameof(Load), Mathf.Max(300f, refreshMinutes * 60f)); } public override void OnStringLoadSuccess(IVRCStringDownload result) { if (label != null) label.text = result.Result; } public override void OnStringLoadError(IVRCStringDownload result) { if (label != null) label.text = errorText; } }