投稿

5月, 2024の投稿を表示しています

動的にScriptableObjectを生成する - (Unity初心者)

 はじめに 敵の設定パラメーターやステージ情報などのゲーム実行時には変わらないデータを格納するのに便利なScriptableObject。 今回はこのScriptableObjectを動的に(処理を書いて自動で)プロジェクトのアセットに作成する。 コード全体 #if UNITY_EDITOR using UnityEditor; #endif namespace Myfolder.DataBese { public class StageCreator { private const string GENERATE_STAGE_ASSETPATH = "Assets/Myfolder/DataBase/generateStage"; public static void CreateStageAsset(Stage _generateStage) { #if UNITY_EDITOR // 同一ファイル名が被らないようにする int fileCount = 1; var assetPath = GENERATE_STAGE_ASSETPATH + $"/{fileCount}.asset"; while (AssetDatabase.LoadAssetAtPath<Stage>(assetPath) != null) { fileCount++; assetPath = GENERATE_STAGE_ASSETPATH + $"/{fileCount}.asset"; } // ScriptableObjectをアセットとして保存 AssetDatabase.CreateAsset(_generateStage, assetPath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); #else Debug.LogError("This method sho

PlayFabでタイトルデータを扱う(Unity初心者)

イメージ
 はじめに Unityでゲーム開発をしていて、ランキングやログイン機能などのサーバーと連携する必要がある場合、私はPlayFabというBaaSを利用している。 今回はこのPlayFabを利用して、ゲーム上で制作したステージデータをタイトルデータとしてPlayFabに保存して、その保存したデータからステージを作成しようと思う。 PlayFabについて PlayFab とは? タイトルデータの作成 タイトルデータはゲーム上であまり変動がない値を設定するデータであるからして、Unityに導入されたPlayFabSDKにはタイトルデータをゲーム側から設定する処理がない。 基本的な使い方はPlayFabのダッシュボード上で手動でkeyとvalueを登録する。 しかし、今回はゲーム中で作成したステージデータを一時保存用にタイトルデータにJSONデータとして保存したい。 なので、REST APIを用いてタイトルデータの作成を行なった。 以下はPlayFabのタイトルデータを送信する全体のコード [Header("タイトルデータ用API情報")] [SerializeField] string setTitleData_endPoint; [SerializeField] string developerSecretKey; /// タイトルデータを登録する public async UniTask SetTitleDataFromJsonAsync(string _json) { //現在のタイムスタンプを使用して一意のキーを作成 string key = DateTime.Now.ToString("yyyy/MM/dd[HH:mm:ss.fff]"); //リクエストの作成 string requestBody = $"{{\"Key\":\"{key}\",\"Value\":\"{_json.Replace("\"", "\\\"")}\"}}"; //JS