顺晟科技
2021-06-16 10:37:26
501
亚麻有色织带提供了将墨水整合到一致中的插件,我们可以到如下地址下载:
油墨统一插件
去下载
我们下载的是v 0.8.1的稳定版unityinkintegration n 0。8 .1 .unity包
准备我们的一致项目
创建一个新的2D项目,并且保存事件为主,然后引入一致插件。
再把我们上一篇完成的墨迹演示拖进项目,我们的叫做demo.ink。
引入墨水文件之后,会自动编译成数据的可用格式,我们的素材库看起来会像下面这样:
然后创建帆布画布并且增加两个必要的元素:按钮(按钮)和文字(文本),并且将它们做成预制的,供后面使用。按钮是用来显示选项并做出选择的,而文本使用来显示基本内容的。
因为要使用预制的所以将帆布清空即可,然后给帆布增加C#脚本,取名Script.cs吧!
这样,我们的素材就准备完毕了:
其实墨水脚本引入以后,是可以直接在一致中测试的。选中。墨水文件,属性栏里面就会出现玩按钮,可以直接运行并测试。
可以直接在一致编辑器中调试
编写脚本
脚本代码如下,已经添加了注释:
使用UnityEngine
使用墨水。运行时;
公共类Script: MonoBehaviour
{
//墨迹数据
[SerializeField]私有文本资产墨迹文件
//画布
[SerializeField]私有画布;
//墨迹故事
私人故事_ inkStory
//是否需要新的故事片段
需要私人故事
//距离(用来确定内容和按钮位置)
private int _ padding=10
/*用户界面预设*/
//文本
[SerializeField]私有统一引擎.UI。文字文字;
//按钮
[SerializeField]私有统一引擎.用户界面,按钮选择;
//初始化
私人空间清醒()
{
_故事需要=真
_ inkStory=new Story(inkfile。文本);
//设置玩家名称
_ inkstory。variablestate[' player _ name ']='某人;
}
//每帧调用一次更新
私有无效更新()
{
if(!_故事需要)返回;
//清空画布内容
移除子项();
//各个元素的偏移,需重新计算
float VOffset=0;
//如果故事可以继续
if (_inkStory.canContinue)
{
var story text=instance(text);
//取得要显示的文字
storyText.text=_inkStory .continue();
//定位相关
故事文本。转变。设置父(画布。transform,false);
故事文本。转变。translate(新向量2(0,VOffset));
vOffset-=(故事文本。font size _ padding);
}
//如果有多个选择,那么逐个处理
if(_ inkstory。当前办公室。计数0)
{
for(var I=0;I _ inkstory。当前的选择。计数;I)
{
//定位相关
var选择按钮=实例化(btnChoice);
选择按钮。转变。SetParent(画布。transform,false);
选择按钮。转变。翻译(新矢量2(0,VOffset));
//取得选择
var choice=_ inkstory。当前办公室[I];
//设置按钮的选择文本
var choiceText=选择按钮.GetComponentInChildrenUnityEngine。ui。text();
选择文本。text=choice。文本;
//定位相关
var布局组=选择按钮. GetComponentUnityEngine。ui。horizontallayoutgroup();
vOffset -=(choiceText.fontSize
layoutGroup.padding.top
layoutGroup.padding.bottom
_ padding);
//获取按钮点击后对应的路径
var path=choice。PathStringchoice
选择按钮。OnClick。AddListener(delegate { choice PasthSelected(路径);});
}
}
//本次操作完成,等待响应
_故事需要=假
}
///摘要
///清空画布内容
////摘要
private void RemoveChildren()
{
var子计数=canvas。转变。子计数;
for(var I=child count-1;I=0;- i)
{
破坏(画布。转变。GetChild(I)).gameObject);
}
}
///摘要
///选择路径
////摘要
///param name='path '路径名称/param
私有空的选项选定(字符串路径)
{
_inkStory .ChoosePathString(路径);
_inkStory .continue();
_故事需要=真
}
}
代码还是很简单的,基本和官方提供的差不多。我们补充道:
_ inkstory . variablestate[' player _ name ']
设置玩家名称,并在路径中导航。
收尾工作
我们回到统一编辑界面,绑定程序运行所需的对象,如图所示:
然而,这还没有结束。我们需要给按钮和文字添加自动居中设置,并做一些边距控制颜色调整等美化工作,基本是这样的:
如果一切顺利,你可以跑了
02
2022-09
23
2022-05
16
2021-06
16
2021-06