運営しているもの
NETWORK

UDON11

ワールドの中の掲示板に。

UdonSharpで、VRCニュースや、セール情報を表示します。

先に読んでください

  • このコードは、実機での動作確認ができていません。VRChat公式のドキュメントに沿って書きましたが、ワールドで試した結果は保証できません。動いた/動かなかったは、お問い合わせから教えてもらえると助かります。
  • プレイヤー側で、「信頼されていないURLを許可」が有効なときだけ、表示されます。許可していない人には、「読み込めませんでした」と出ます。
  • 読み込みの間隔は、5分より短くしないでください。VRChat側にも、読み込みの回数の制限があります。
  • VRChat・BOOTH非公式です。

使い方

  1. ワールドのUnityプロジェクトに、HcnNewsBoard.cs を入れます(VRChat SDK と UdonSharp が必要です)。
  2. シーンに、TextMeshPro(UI)を置き、日本語が出るフォントを割り当てます。
  3. 空のオブジェクトに、HcnNewsBoard を付けて、Url に下の一覧のURLを入力し、Label に TextMeshPro を割り当てます。
  4. アップロードして、ワールドで確認します。

読み込める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;
    }
}

APIリファレンスVRCニュース

START

コエルを、あなたのサーバーへ。

無料プランから、すぐに使えます。

コエルを使う