说明:使用ScriptableObject保存游戏中角色数值等;主要是生成Assets文件,然后调用文件中的数值,数值也可保存在文件中,达到存储信息的目的。
·
·
·
1.创建ScriptableObject脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName ="New Data", menuName ="Character States/Data")]
public class CharacterData_SO : ScriptableObject
{
[Header("Stats Info")]
public int MaxHealth;
public int CurrentHealth;
public int BaseDefence;
public int CurrentDefence;
}
图1.1
图1.2
2.生成Assets文件
在创建好脚本的前提,按照图1.1生成文件即可得到图1.2的文件
3.在其他脚本中调用该文件中的数值
假如我们要在CharacterStats脚本中调用数值
public class CharacterStats : MonoBehaviour
{
public CharacterData_SO CharacterData;
public int maxHealth
{
get
{
if (CharacterData !=null)
{
return CharacterData.MaxHealth;
}
else
{
return 0;
}
}
set
{
CharacterData.MaxHealth = value;
}
}
}
4.给角色上脚本
给所需要控制的角色挂上“3.在其他脚本中调用该文件中的数值”中写的脚本,如图4.1。
图4.1
5.调用数值
在完成以上步骤后,可在其他控制脚本中调用该文件中设定的数值
5.1 获取CharacterStats组件
public class PlayerController : MonoBehaviour
{
private CharacterStats CharacterStat;
private void Awake()
{
CharacterStat = GetComponent<CharacterStats>();
}
}
5.2调用数值
public class PlayerController : MonoBehaviour
{
private CharacterStats CharacterStat;
private void Awake()
{
CharacterStat = GetComponent<CharacterStats>();
}
private void Start()
{
CharacterStat.MaxHealth = 20;
}
}
|