创新项目实训实践笔记-9

    技术2022-07-11  115

    创新项目实训实践笔记-9

    物品展示部分3-实体操控物体弹出思路介绍脚本实现

    物品展示部分

    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; } } }

    这样就可以在开窗关窗时实现物体的弹出和回收操作。

    Processed: 0.008, SQL: 9