标题有点不清楚,所以这里有一个详细的解释:我想在移动的游戏中做一个商店。当你点击打开商店的按钮时,会显示不同的物品类型(垂直排序),但是有很多元素,例如一个物品类型可以在一行中显示它们(水平排序)。所以我想你可以通过添加一个“滚动系统”来解决这个问题,它的工作原理是这样的:你点击一个按钮,以前不能显示的元素就会显示出来。你还可以看到以前显示过的元素之一,这样你就可以看到你的行在哪个方向循环了。它可以是一个平滑的移动,也可以是瞬间的。
以下是使其不那么容易实现的条件:
- 当你买了一件东西,它应该从商店里消失。
- 当你在结束时,一个按钮应该出现,让你循环回到之前的项目。
- 它需要支持多达8个元素。
Here a picture of how I imagine the shop:
我想我可以使用一个滚动矩形,禁用滚动,并根据你点击按钮的次数来改变 horizontalNormalizedPosition。我还没有尝试过,但我想如果我有6个元素,每次我点击按钮来显示我添加的其他元素,比方说0.2f到 horizontalNormalizedPosition,我买了一个项目(所以它被删除了),0.2就不再起作用了,因为其他元素的一点可能会被显示出来,或者类似的东西。所以你需要跟踪元素的数量,并根据它和它们的大小来改变值。
但是有没有更简单的解决方案,或者解决问题的方案,这样你只需要写代码而不需要添加一个scroll rect?
谢谢
2条答案
按热度按时间wrrgggsh1#
也许您可以使用Mask组件每次只显示两个购物按钮,并根据您的需要启用和禁用左右滚动按钮。
为此,需要并排放置三个对象:一个滚动左按钮,一个面板遮罩和一个滚动右按钮。Here是一个链接的图像显示如何设置这一点。
面板蒙版对象中必须包含蒙版组件,这样您只能显示其子对象的一部分。将包含shop itens数组的对象添加为面板蒙版对象的子对象。单击右键或左键时,将移动shop itens数组的变换位置。
os8fio9y2#
您需要调整逻辑以在商店中动态创建您的项目。最明显的逻辑将是:
ShowProducts(List<MyProduct> products)
的调用做出ReactShowProducts
开头的所有当前产品,并为列表中显示的每个MyProduct示例创建预制件,然后将其添加到根对象。我认为这足以理解原理。在这种情况下,为了能够显示更多/更少的项目,您只需要使用不同的项目集合调用ShowProducts。此外,您可以使用具有不同过滤器的多个集合,例如,等等。