Like1つ星
読み込み中...

Clusterスクリプトを使ったカウントダウンギミックサンプル

ブログ

Clusterスクリプトを使ってカウントダウン表示を行うギミックを作成してみました。

ファイル構成

■CountDown(ScriptableItem)

├ num_0_0 ~ num_0_9(SetGameObjectActiveGimmik)※日

num_1_0 ~ num_1_9(SetGameObjectActiveGimmik)※時間10の位

num_2_0 ~ num_2_9(SetGameObjectActiveGimmik)※時間 1の位

num_3_0 ~ num_3_9(SetGameObjectActiveGimmik)※分 10の位

num_4_0 ~ num_4_9(SetGameObjectActiveGimmik)※分 1の位

num_5_0 ~ num_5_9(SetGameObjectActiveGimmik)※秒 10の位

num_6_0 ~ num_6_9(SetGameObjectActiveGimmik)※秒 1の位

CountDownのスクリプト内で現在の日時秒からターゲットの日付までの残りの日時秒を算出し、各位に対応した1~9の画像の表示・非表示を制御する感じです。

スクリプト

$.onUpdate(deltaTime => {

  /* 文字列取得 */
  let str = updateCountdown();

  /* 文字列分解 */
  let result = str.split('');
  
  /* 表示の初期化 */
  for(let i=0; i<7; i++){

    for(let j=0; j<=9; j++){

      $.setStateCompat("this", "num_" + i + "_" + j, false);

    }

  }

  /* 再表示 */
  let currentYear = new Date().getFullYear();

  if(currentYear >= 2023){ // ここの条件にターゲットの年月日を設定

    $.log('2023年になりました。');
    $.setStateCompat("this", "num_0_0", true);
    $.setStateCompat("this", "num_1_0", true);
    $.setStateCompat("this", "num_2_0", true);
    $.setStateCompat("this", "num_3_0", true);
    $.setStateCompat("this", "num_4_0", true);
    $.setStateCompat("this", "num_5_0", true);
    $.setStateCompat("this", "num_6_0", true);

  } else {

    for(let i=0; i<7; i++){

      $.setStateCompat("this", "num_" + i + '_' + result[i], true);

    }

  }

});

function updateCountdown() {

  let currentYear = new Date().getFullYear();
  let nextYear = currentYear + 1;
  let newYearTime = new Date(`January 01 ${nextYear} 00:00:00`);

  let currentTime = new Date();
  let diff = newYearTime - currentTime;
  let d = Math.floor(diff / 1000 / 60 / 60 / 24);
  let h = Math.floor(diff / 1000 / 60 / 60) % 24;
  let m = Math.floor(diff / 1000 / 60) % 60;
  let s = Math.floor(diff / 1000) % 60;

  let str = String(d);

  if(h < 10){

    str = str + '0' + String(h);

  } else {

    str = str + String(h);

  }

  if(m < 10){

    str = str + '0' + String(m);

  } else {

    str = str + String(m);

  }

  if(s < 10){

    str = str + '0' + String(s);

  } else {

    str = str + String(s);

  }

  $.log(str);
  return str;

}

ダウンロード

上記一式のパッケージを下記からダウンロードいただけます。

https://metaversenavi.net/countdown.unitypackage

コメント

タイトルとURLをコピーしました