UDON11
ワールドの中の掲示板に。
UdonSharpで、VRCニュースや、セール情報を表示します。
先に読んでください
- このコードは、実機での動作確認ができていません。VRChat公式のドキュメントに沿って書きましたが、ワールドで試した結果は保証できません。動いた/動かなかったは、お問い合わせから教えてもらえると助かります。
- プレイヤー側で、「信頼されていないURLを許可」が有効なときだけ、表示されます。許可していない人には、「読み込めませんでした」と出ます。
- 読み込みの間隔は、5分より短くしないでください。VRChat側にも、読み込みの回数の制限があります。
- VRChat・BOOTH非公式です。
使い方
- ワールドのUnityプロジェクトに、HcnNewsBoard.cs を入れます(VRChat SDK と UdonSharp が必要です)。
- シーンに、TextMeshPro(UI)を置き、日本語が出るフォントを割り当てます。
- 空のオブジェクトに、
HcnNewsBoardを付けて、Urlに下の一覧のURLを入力し、Labelに TextMeshPro を割り当てます。 - アップロードして、ワールドで確認します。
読み込めるURL(プレーンテキスト)
| 内容 | URL |
|---|---|
| VRCニュースの見出し | https://hcnnetwork.hachune.space/api/v1/news/headlines.txt |
| 最新の記事 | https://hcnnetwork.hachune.space/api/v1/news/latest.txt |
| セール情報 | https://hcnnetwork.hachune.space/api/v1/feed/sale.txt |
| ワールド制作者向けの情報 | https://hcnnetwork.hachune.space/api/v1/feed/world.txt |
| セール中のアバター | https://hcnnetwork.hachune.space/api/v1/deals/avatars.txt |
| 人気のワールド | https://hcnnetwork.hachune.space/api/v1/popular/worlds.txt |
| サービスの稼働状況 | https://hcnnetwork.hachune.space/api/v1/status.txt |
商品・ワールドを表示するときは、出店元・作者の名前も、あわせて表示してください(お願いです。強制ではありません)。
コード
// 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;
}
}
START
コエルを、あなたのサーバーへ。
無料プランから、すぐに使えます。