创新项目实训实践笔记-9
物品展示部分
3-实体操控物体弹出
思路介绍
刚开始的时候,我想的是,使用一个button来控制物体的弹出和回收,将button命名为display,点击button后物体会弹出,同时修改button的text为back,再次点击button即可回收物品。这样想来,其实比较好实现,也比较方便,但是如果每一个类似的功能都使用按钮来控制,一方面会早场界面中存在大量按钮,导致界面杂乱无章;另一方面总是使用一个技术来实现,并不能很好的达到学习的目的。因此,我决定把弹出和回收的方法使用滑动手机的方式实现,恰逢队友实现了开窗和关窗的功能,我决定将该功能整合进队友的代码中,实现开窗后,物体弹出,关窗后,物体回收,这样可以简化用户的操作,也可以使得用户的观感提升。
脚本实现
首先我们阅读一下队友的代码
if (fingerSegmentX > 0)
{
Debug.Log("right");
//开窗操作
if (!windowState)
{
if (anim.isPlaying == false) //判断该动画是否正在播放
{
anim[animName].speed = 1;
anim.Play(animName); // 播放动画
windowState = !windowState; // bool值取反
}
}
}
else
{
Debug.Log("left");
//关窗操作
if (windowState)
{
if (anim.isPlaying == false) //判断该动画是否正在播放
{
// 设置开始播放的时间为最后的时刻,默认是从0s开始播放的
anim[animName].time = anim[animName].length;
anim[animName].speed = -1;
anim.Play(animName); // 播放动画
windowState = !windowState; // bool值取反
}
}
}
在这一部分,实现了开窗和关窗的逻辑,因此我们要在这里整合我们的代码。
首先,要实现这一操作,就需要获取到上一篇博客中我们完成的脚本中的两个flag的值,以便进行修改,因此我们创建一个gameobject
private GameObject item;
在start方法中对其进行赋值
item = GetComponent<change_items>().nowItem;
然后在开窗部分修改其flag1的值为true
if (fingerSegmentX > 0)
{
Debug.Log("right");
//开窗操作
if (!windowState)
{
if (anim.isPlaying == false) //判断该动画是否正在播放
{
anim[animName].speed = 1;
anim.Play(animName); // 播放动画
windowState = !windowState; // bool值取反
item.GetComponent<display_item>().flag1 = true;
}
}
}
然后在关窗部分修改其flag2的值为true
else
{
Debug.Log("left");
//关窗操作
if (windowState)
{
if (anim.isPlaying == false) //判断该动画是否正在播放
{
// 设置开始播放的时间为最后的时刻,默认是从0s开始播放的
anim[animName].time = anim[animName].length;
anim[animName].speed = -1;
anim.Play(animName); // 播放动画
windowState = !windowState; // bool值取反
item.GetComponent<display_item>().flag2 = true;
}
}
}
这样就可以在开窗关窗时实现物体的弹出和回收操作。