CharacterStats 人物基本属性和数值:
此处通过ScriptableObject类型脚本来创建存放角色数值的文件
首先创建相关的文件夹来存放:
建立一个存放脚本以及存放数据的文件夹: 接着在CharacterData_SO中进行简单的编写(此处举例几个属性):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName ="New Data",menuName ="Character Stats/Data")]
public class CharacterData_SO : ScriptableObject
{
[Header("Stats Info")]
public int maxHealth;
public int currentHealth;
public int baseDefence;
public int currentDefence;
}
这里列举了生命和防御属性,并且此脚本是ScriptableObject类型,而且是可在编辑器种对齐进行创建。其他小伙伴可以自行进行扩充。
创建第一个Data:
返回编译器中创建相应的文件夹进行数据的存放,并且创建第一个Data 创建完成后可对其属性进行编写:
创建MonoBehavior的脚本来进行数据的管理(可挂载在角色身上):
名字自行定义即可 此脚本的作用是用来读取CharacterData_SO,并且可以对其进行内容的修改 代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterStats : MonoBehaviour
{
public CharacterData_SO characterData;
#region Read for Data_SO
public int MaxHealth
{
get{ if (characterData != null) return characterData.maxHealth; else return 0; }
set{ characterData.maxHealth = value; }
}
public int CurrentHealth
{
get { if (characterData != null) return characterData.currentHealth; else return 0; }
set { characterData.currentHealth = value; }
}
public int BaseDefence
{
get { if (characterData != null) return characterData.baseDefence; else return 0; }
set { characterData.baseDefence = value; }
}
public int CurrentDefence
{
get { if (characterData != null) return characterData.currentDefence; else return 0; }
set { characterData.currentDefence = value; }
}
#endregion
}
此处利用了c#特性的get set方法来对数据的读取和修改,减少多级访问 接着将脚本挂着到Player上。此处我用了自己的一个项目,小伙伴可以用个方块测试也行: 挂载在物体上后并选择自己的Data即可。 最后,在你的角色控制脚本中对此脚本进行引用便可直接读取到Data里面的数据,或者更改其数据。
最后,这样做的原因是以后在修改角色数据时,可直接修改Data里面的数值,而不用在脚本中进行修改,有便于管理。
有需要的小伙伴可以自己设定自己的相关数值来进行使用!!!!
|