Skip to content

Instantly share code, notes, and snippets.

@todorok1
Created April 8, 2025 08:31
Show Gist options
  • Select an option

  • Save todorok1/60192433dafae0d9d43c6aa76014636d to your computer and use it in GitHub Desktop.

Select an option

Save todorok1/60192433dafae0d9d43c6aa76014636d to your computer and use it in GitHub Desktop.
シンプルRPGチュートリアル第64回 味方キャラクターのステータスをセットアップするクラス
using System.Collections.Generic;
using UnityEngine;
namespace SimpleRpg
{
/// <summary>
/// 味方キャラクターのステータスをセットアップするクラスです。
/// </summary>
public class CharacterStatusSetter : MonoBehaviour
{
/// <summary>
/// 味方キャラクターのステータスをセットします。
/// </summary>
[SerializeField]
List<int> _partyCharacters = new() {1};
void Update()
{
if (Time.frameCount == 5)
{
SetPlayerStatus();
}
}
/// <summary>
/// 味方キャラクターのステータスをセットします。
/// </summary>
void SetPlayerStatus()
{
var exp = 0;
var level = 1;
List<CharacterStatus> characterStatuses = new();
foreach (int characterId in _partyCharacters)
{
// レベルに対応するパラメータデータを取得します。
var parameterTable = CharacterDataManager.GetParameterTable(characterId);
var parameterRecord = parameterTable.parameterRecords.Find(record => record.level == level);
// 指定したレベルまでに覚えている魔法のIDをリスト化します。
var magicList = GetMagicIdList(characterId, level);
// キャラクターのステータスを設定します。
CharacterStatus status = new()
{
characterId = characterId,
level = level,
exp = exp,
currentHp = parameterRecord.hp,
currentMp = parameterRecord.mp,
equipWeaponId = 0,
equipArmorId = 0,
magicList = magicList,
};
characterStatuses.Add(status);
}
CharacterStatusManager.characterStatuses = characterStatuses;
// パーティにいるキャラクターのIDをセットします。
CharacterStatusManager.partyCharacter = _partyCharacters;
// 所持アイテムをセットします。
CharacterStatusManager.partyItemInfoList = new();
// 所持金をセットします。
CharacterStatusManager.partyGold = 0;
}
/// <summary>
/// キャラクターが覚えている魔法のIDリストを返します。
/// </summary>
/// <param name="characterId">キャラクターID</param>
/// <param name="level">キャラクターのレベル</param>
List<int> GetMagicIdList(int characterId, int level)
{
var learnableMagic = CharacterDataManager.GetLearnableMagic(characterId, level);
List<int> magicList = new();
foreach (var record in learnableMagic)
{
magicList.Add(record.magicId);
}
return magicList;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment