[GameFramework]教程06-实体加载

1.创建初始场景和实体预制体(Prefab)

初始场景的创建就不多说,一个Demo6场景加上一个Demo6_ProcedureLaunch.cs流程脚本,并设置好初始流程,具体参考Demo1。

创建实体时,是从预制体创建的,所以我们需要建一个预制体,随便建,比如我建了一个很复杂的预制体——一个Cube。

我们把预制体命名为CubeEntity吧。

最终的目录结构是这样的:

2.实体逻辑处理类

一个实体预制体仅仅只是用来展现的,要让实体拥有生命,还需要一个负责处理逻辑的脚本。

新建一个脚本,命名为Demo6_HeroLogic.cs:

using GameFramework;
using UnityGameFramework.Runtime;

/// <summary>
/// 英雄逻辑处理
/// </summary>
public class Demo6_HeroLogic : EntityLogic
{
    protected Demo6_HeroLogic()
    {
    }
    //目前GF3.1.1版本,需要写成 protected internal override void OnShow(object userData) 因为程序集程序集的拆分关系,所以访问符不同
    protected override void OnShow (object userData) {
        base.OnShow (userData);

        Log.Debug("显示英雄实体.");
    }
}

只要让类继承EntityLogic,即可成为逻辑处理类,其中包含多个生命周期,大家可以自己进去EntityLogic.cs类查看。

这里仅重写OnShow函数,在实体被加载时打印一条日志。

3.加载实体

准备好预制体和逻辑处理类之后,就可以加载实体了,我们在初始流程里加载实体试试:

using GameFramework;
using GameFramework.Procedure;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;

public class Demo6_ProcedureLaunch : ProcedureBase {
    protected override void OnEnter(ProcedureOwner procedureOwner)
    {
        base.OnEnter(procedureOwner);

        // 获取框架实体组件
        EntityComponent entityComponent
            = UnityGameFramework.Runtime.GameEntry.GetComponent<EntityComponent>();

        // 创建实体
        entityComponent.ShowEntity<Demo6_HeroLogic>(1, "Assets/Demo6/CubeEntity.prefab", "EntityGroup");
    }

}

加载实体自然需要用到框架的实体组件,调用实体组件的ShowEntity即可加载实体。

其中需要指定逻辑处理类的类型、传入预制体路径和实体分组名称(随便写一个,没事的)。

4.运行测试

设置好初始流程之后,运行游戏,看看效果吧。

(旁白:报错了!你肯定挖坑了!)

是不是报错了?

没错,报错是正常的,因为你们在调用ShowEntity的时候随便填了一个实体分组名称。

那样是不道德的,因为根本就不存在这个分组。(旁白:刀在这,大家随意)

只要在Hierarchy视图里,给Entity组件增加分组就可以了:

最后再运行游戏,实体成功加载并显示(自己加光源,不然可能黑黑的):如果看不到,请把预制体放到Entity下然后调整坐标跟大小,就之后在Apply,然后删除。就可以了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值