更加详细的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",
"设置鼠标的显示/隐藏")]
结果:
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;
}
结果:
7、GetButtonColor()方法
设置功能模块的颜色,我设置的是深蓝色,这让我可以更直观地发现自己写的模块在什么位置
代码:
public override Color GetButtonColor()
{
return new Color32(150, 182, 255, 255);
}
结果显而易见,我的模块与官方的模块颜色都不一样,十分容易分辨:
以上只是讲了个基础大概,还有很多细节没有涉及,大家可以在实际开发中参考并学习Fungus官方脚本,编写出属于自己的功能模块。
Fungus官方网站里也有教学视频,是纯英文版的:) 教学视频特别详细,不过有的视频是要付费的。
看都看了,点个赞呗~