Unity-学习笔记
- Fungus插件实现对话
- 拓展-通过fungus实现碰撞弹出对话框
- 拓展-在代码里动态修改say里的storytext
Fungus插件实现对话
Fungu是免费的对话系统插件,直接在unity的assetsstore里下载就好了,里面有很多的案例可以直接下载
时间关系后面有时间再做详细的记录吧
这里只说一点
如果需要对碰撞体进行对话的话,不管是collider还是charactercontroller,都需要通过被碰撞体的istrigger进行判断,如果用各自的oncollider/oncontrollercollier方法会出现不断重复的情况,使用istrigger就不会,一次接触只会出现一次
感觉后面还需要实现表情的出现和不同的事件进行判断,不过这个后面再说吧
题外话
由于有一个好朋友临近生日,想着用一年来所学的知识给他做一个简单的情景剧小游戏,所以更新博客的频率会下降很多,之前一直做的项目也还没做完,所以只能硬着头皮上了~
加油~如果小游戏做完的话可能会上传到github
同天更新一下
fungus还有需要扩展的地方
所以是需要我们自定义脚本的
这个是第一次体验,所以记录一下
通过给需要添加到fungus插件的自定义脚本添加一个命名空间,然后重写他的onenable和continue的方法,在类前添加一个注解就可以实现添加自定义脚本的功能了
记录一下,不然这个星期可能都不会写博客了,虽然观看量不多,不过还是鞭策一下自己不要太松散了~
拓展-通过fungus实现碰撞弹出对话框
给需要弹出对话框的物体添加coliderflowchart脚本
给这个物体的colider设置为trigger
打开flowchat编辑框,把block的启动条件修改为trigger
再设置需要显示的内容即可
另一个物体需要添加colider和对应的rigidbody组件,否则无法正常检测碰撞
拓展-在代码里动态修改say里的storytext
根据源码,say继承了command和一个接口,那个接口不重要,因为源码里他没有太多的方法和内容
通过观察发现say里重写了command的虚方法后就可以调用了
因此简单的思路就是在command里添加一个你需要的虚方法,比如我这里需要动态获得和修改say的storytext的话,
1
就需要写两个虚方法
public virtual string GetStoryText()
{
return "123121312";
}
public virtual void SetStoryText(string text)
{
}
方法名和方法体里的东西都随便,这个没啥关系,因为我们实际的逻辑是在继承了command的say类里重写的
到这里command类的任务就完成了
2
然后在say类里重写这两个方法即可
public override string GetStoryText()
{
return storyText;
}
public override void SetStoryText(string text)
{
storyText = text;
}
3
然后就可以通过fungus的api去调用函数啦
GetFlowchart().FindBlock("block名称").CommandList[5].SetStoryText("as扥打算扥");
GetFlowchart().FindBlock("block名称").CommandList[5].GetStoryText();