这是通过读表的方式来读取模型从而实例化,加载实体
GF框架中给我们封装好了Entity的方法
我们这里需要调用即可
首先仿照上面的方法我们写一个创建人物的方法在这个脚本中
实体的具体信息在这个表中 AssetName是存的预制体的名字
还有每个角色所对应的具体信息同样存在表中
创建一个玩家角色的信息脚本
用于处理逻辑的类,目的是为了确定模型实体加载出来的位置,大小等信息
然后开始写创建脚本的逻辑,因为拿到了实体的数据,这个数据来自于PlayerRoleData这里可以F12进入导航
然后这里PlayerRoleData是由
CreateRoleForm中的
这里赋值的这个编号就叫做实体ID
CreateRoleForm脚本中 ----------- 让RoleID变成实体ID
这里写了一个方法可以在右边显示出来当前展示的角色和他的实体ID
CreateRoleForm还有一个方法就是随机名字
同样的还是读表,从DRFirstName表中读取名字
当我们每次要新建一个实体的时候这都是一个组
我们要更改他的组的数目
在这里我们新建一个PlayerRole组,这些参数都是框架做好的,分别是实例化间隔,实例化容量 实例化时间 还有优先级,
下面是本文中提到的几个脚本
using GameFramework.DataTable;
using System;
using UnityEngine;
namespace StarForce
{
/// <summary>
/// 角色的具体信息表
/// </summary>
public class PlayerRoleData : EntityData
{
[SerializeField]
private string m_Name;
[SerializeField]
private string m_Describe;
[SerializeField]
private Vector3 m_PositionZ;
[SerializeField]
private Vector3 m_RotationY;
/// <summary>
///
/// </summary>
/// <param name="entityId">实体id</param>
/// <param name="typeId">资源类型id</param>
public PlayerRoleData(int entityId, int typeId)
: base(entityId, typeId)
{
IDataTable<DRPlayerRole> dtPlayerRoles = GameEntry.DataTable.GetDataTable<DRPlayerRole>();
DRPlayerRole drPlayerRole = dtPlayerRoles.GetDataRow(TypeId);
if (drPlayerRole == null)
{
return;
}
m_Name = drPlayerRole.Name;
m_Describe = drPlayerRole.Describe;
m_PositionZ = new Vector3(0, drPlayerRole.PositionY,0);
base.Position = m_PositionZ;
m_RotationY = new Vector3(0, drPlayerRole.RotationY, 0);
base.Rotation =Quaternion.Euler(m_RotationY);
}
}
}
using GameFramework;
using GameFramework.DataTable;
using System;
using UnityGameFramework.Runtime;
namespace StarForce
{
public static class