Unity 对话插件Fungus脚本扩展——基础(继承Command)

更加详细的Fungus基本使用方法在我的另一篇博客里有介绍:
http://t.csdn.cn/cDBeB

Fungus是一款功能非常非常强大的插件,可以开发游戏的对话功能。而且!它!还是完全免费的!!在Unity官方商店AssetStore里就有。

在我看来,Fungus最优秀的地方在于它方便魔改和扩展,这也是在我开发游戏时,放弃了自己开发的对话系统转而研究Fungus的原因之一(真香)。

毕竟,就算Fungus提供的方法脚本再丰富、再全面,也不可能满足得了每个特殊的需求。这时,就需要我们编写脚本扩展Fungus的功能。
自定义的扩展脚本

举个实例:

编写一个扩展脚本,使Flowchart可以设置鼠标光标的显示/隐藏。该脚本命名为SetMouseCursorVisible,先给出完整代码:

using UnityEngine;
using Fungus;

namespace ZyScripts.FungusExtend	//这是我规范的命名空间,不重要
{
    /// <summary>
    /// Fungus自定义扩展
    /// 设置鼠标的显示/隐藏
    /// </summary>
    [CommandInfo("ZyScripts",
             "Set Mouse Cursor Visible",
             "设置鼠标的显示/隐藏")]
    public class SetMouseCursorVisible : Command
    {
        [Header("Cursor.visible的值")]
        [SerializeField] private BooleanData cursorVisible;

        #region Public members
        public override void OnEnter()
        {
            Cursor.visible = cursorVisible;	//设置鼠标光标
            Continue();
        }

        public override string GetSummary()
        {
            if (cursorVisible.Value)
                return "显示鼠标,Cursor.visible = " + cursorVisible.Value;
            else
                return "隐藏鼠标,Cursor.visible = " + cursorVisible.Value;
        }

        public override Color GetButtonColor()
        {
            return new Color32(150, 182, 255, 255);
        }

        #endregion
    }
}

以下重点是扩展脚本必须要有的:

1、命名空间的引用

using Fungus;

必须要引用Fungus命名空间,否则无法继承Command;

2、CommandInfo
这个是必写项,不然脚本写好了,你也用不了
代码:

[CommandInfo("ZyScripts",
         "Set Mouse Cursor Visible",
         "设置鼠标的显示/隐藏")]

结果:
CommandInfo

3、继承Command

public class SetMouseCursorVisible : Command

这个没啥好说的,继承就对了

4、重写OnEnter()方法

public override void OnEnter()

GetSummary()方法和GetButtonColor()方法都可以没有,但是OnEnter()方法一定要有。方法体就是你要实现的功能,即鼠标光标的显示/隐藏

5、Continue();
OnEnter()方法里一定要有Continue(),它意味着这一个功能模块执行完毕了,跳转至下一个功能模块。一般写在OnEnter()方法体的最后一行

public override void OnEnter()
{
    Cursor.visible = cursorVisible;	//设置鼠标光标
    Continue();
}

接下来的两点是可视化的辅助功能,可写可不写:

6、GetSummary()方法
用于在Unity编辑器里直观地展示模块功能或结果
代码:

public override string GetSummary()
{
    if (cursorVisible.Value)
        return "显示鼠标,Cursor.visible = " + cursorVisible.Value;
    else
        return "隐藏鼠标,Cursor.visible = " + cursorVisible.Value;
}

结果:
GetSummary()方法
7、GetButtonColor()方法
设置功能模块的颜色,我设置的是深蓝色,这让我可以更直观地发现自己写的模块在什么位置
代码:

public override Color GetButtonColor()
{
    return new Color32(150, 182, 255, 255);
}

结果显而易见,我的模块与官方的模块颜色都不一样,十分容易分辨:
GetButtonColor()方法
以上只是讲了个基础大概,还有很多细节没有涉及,大家可以在实际开发中参考并学习Fungus官方脚本,编写出属于自己的功能模块。

Fungus官方网站里也有教学视频,是纯英文版的:) 教学视频特别详细,不过有的视频是要付费的。

看都看了,点个赞呗~

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值