コンテンツにスキップ

ワールド入場時間を制限する

概要

Vket Cloudのイベント機能では24時間以上のイベントを設定することはできません。
そのため、数日間限定のイベントや、毎日7時から10時までの間など、24時間以上の期間や特定の時間帯のみワールドに入れるようにしたい場面では、標準のイベント機能では要件を満たすことは困難です。

本ページでは、JavaScriptを活用し、標準のイベント機能では難しい24時間以上のイベントや特定の時間だけ入れるワールドの作り方を紹介します。

注意

  • 有料プラン限定の機能を使用します。
  • ワールドを「公開」にしている場合、入れない期間であってもワールドへのアクセスリンクは表示されたままとなります。
  • ワールド内にいる人を時間外で追い出す機能ではありません。

検証環境

  • SDKバージョン : 13.7.7
  • OS : Windows 10
  • Unity : 22019.4.31.f1
  • ブラウザ : Google Chrome

手順

① JavaScriptの入稿

JS入稿により、下記の accsesfilter.js を使用ワールドに組み込みます。
時間外のリダイレクトページURLと時間設定を「カスタム項目」内で行う必要があります。

const urlParams = new URLSearchParams(window.location.search);
const worldId = urlParams.get('worldid') || 0;

// カスタム項目
const redirectURL = ""; // イベント時間外のリダイレクトページURLを記載
const termList = { // 期間設定。日付をMM-DDで指定し、開始時間と終了時間をhh:mmで指定する。
    "4-1" : { "StartDate": "17:00", "EndDate":"22:00"}, // 4月1日は17時から22時まで入室可能
    "4-2" : { "StartDate": "10:00", "EndDate":"20:00"}, // 4月2日は10時から20時まで入室可能
};

const currentDate = new Date();
var termKey = (currentDate.getMonth() + 1) + "-" + currentDate.getDate();

const hours = String(currentDate.getHours()).padStart(2, '0');
const minutes = String(currentDate.getMinutes()).padStart(2, '0');
const currentTime = `${hours}:${minutes}`;

console.log("現在は" + termKey + " " + currentTime + " " + "です");

// 期間の入力が無い場合は無条件でリダイレクト
if(termList[termKey] == null) { OpenRedirectPage(); }

console.log("開場時間は" + termList[termKey]["StartDate"] + " " + termList[termKey]["EndDate"]);

let isInterm = false;
// 期間内かどうかを確認
if (currentTime <= termList[termKey]["EndDate"]) {
    if (currentTime >= termList[termKey]["StartDate"]) {
        // 期間内ならそのまま通す
        isInterm = true;
    }
}

// 期間外の場合は通常ワールドへ
if (!isInterm) {
    OpenRedirectPage();
}

function OpenRedirectPage() {
    // 通常ワールドへ遷移する場合はそのURLを指定する
    window.location.href = redirectURL;
}

以上を組み込むだけで、設定は完了です。