嗨,大家好,我对Unity3D完全陌生。我正在尝试创建一个可滚动按钮列表,用户可以在面板中滚动按钮列表。所以我有一个OnGUI函数,并在其中创建了一些宽度和高度相同的按钮。它们的Y轴位置相隔大约55个单位。这一切都是在Unity的C#脚本中完成的。我将脚本附加到面板上,并且该面板还附带有一个垂直滚动条。我在面板中添加了Mask组件,并取消选中了Show Mask Graphic。但是当我点击播放时,按钮根本不显示。是否有可能在脚本内创建一个滚动条并附加到按钮列表?由于在Unity中从C#脚本创建可滚动按钮列表菜单
回答
试试这个代码:
(从Unity脚本引用采取GUI.BeginScrollView)
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Vector2 scrollPosition = Vector2.zero;
void OnGUI() {
scrollPosition = GUI.BeginScrollView(new Rect(10, 300, 100, 100), scrollPosition, new Rect(0, 0, 220, 200));
GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");
GUI.EndScrollView();
}
}
这个答案在3年前可能有效。 OnGUI只能用于编辑器UI。 – Everts
我不这么认为。 IMGUI有其自身的优势,对于一些人来说,它更容易理解和使用。新的图形用户界面有自己的怪癖和问题,并且有时可能会令人难以置信。 – lilotop
@lilotop有趣。 [IMGUI](https://docs.unity3d.com/Manual/GUIScriptingGuide.html)主要用作编辑器中程序员的工具。在新UI出现之前,人们使用NGUI而不是IMGUI。只有爱好者使用IMGUI。发布游戏的人使用NGUI或其他UI插件。 – Programmer
好吧,我会强烈建议您使用新的统一UI系统,而不是使用立即模式GUI(OnGui函数) 。您仍然可以轻松地以编程方式控制事物,但使用画布可以更轻松地进行操作。
您提到使用面板和遮罩,但它们不会与OnGui设置混合使用,即传统UI系统,只能用于Unity编辑器插件。
也就是说有涵盖正是你在统一站点这三个教程需要什么很好的学习资源:
如果你没有任何使用新系统的经验,主要教程页面是here。
我希望有帮助。
如果在游戏中,我不推荐OnGUI,而是使用Unity UI组件。有关于如何在这里创建Scrolalble列表的好视频: https://www.youtube.com/watch?v=lUun2xW6FJ4
您可以轻松地从编辑器或代码向垂直或水平组添加按钮。你只是实例化按钮预制件并将它们放置在水平组合父项中。
GameObject horLayoutGroup;
GameObject buttonPrefab;
var myButton = Instantiate(buttonPrefab, new Vector3(default), Quaternion.identity);
myButton.transform.SetParent(horLayoutGroup.transform)
这将自动缩放整个布局组,并将所有东西整齐地放在一起,而不必使用像素偏移。
如果你想将函数添加到一个按钮,可以使用下面的代码:
myButton = GetComponent<Button>();
myButton.onClick.RemoveAllListeners();
myButton.onClick.AddListener(() => SomeClassInstance.PublicFunction);
myButton.onClick.AddListener(() => SomeOtherClassInstance.AnotherPublicFunction);
- 1. 如何在Inno Setup中创建可滚动的单选按钮列表?
- 2. bash脚本从随机文件列表中创建菜单
- 3. Scroll Rect手动滚动脚本Unity C#
- 4. 自定义按钮/菜单按钮,在CRM创建表单2013
- 5. 动态创建单选按钮列表
- 6. 嵌套列表,动态菜单:创建下一页按钮
- 7. 如何在android中创建水平滚动按钮列表
- 8. 从列表中自动创建单选按钮
- 9. C#Unity创建虚拟按钮
- 10. 在Unity 3D中创建开始菜单
- 11. Unity C#编辑器脚本可帮助您创建脚本对象,如UI按钮
- 12. 如何在任务栏菜单中创建按钮Windows 7 C#?
- 13. 从创建对象属性动态单选按钮列表
- 14. 从单选按钮创建动态列表选择
- 15. android |从菜单按钮创建对话框微调按钮
- 16. Unity从脚本创建UI控制
- 17. 创建菜单时单击ActionBar按钮
- 18. Flex - 菜单创建按钮单击
- 19. 设计在WinForms中动态创建按钮/菜单
- 20. 在Android中创建浮动,可编辑和可滚动列表
- 21. 如何在按钮单击后动态创建JavaScript菜单
- 22. 列表视图中的按钮正在创建滚动和按钮单击的问题
- 23. 在Unity C中的运动脚本#
- 24. 创建单选按钮列表
- 25. 即时创建单选按钮列表
- 26. 如何使用Jmeter为按钮单击创建手动脚本
- 27. cocos2d创建动态菜单列表
- 28. 如何在java脚本中创建动态标签菜单?
- 29. 创建可滚动的图像列表
- 30. 在菜单按钮点击时创建菜单的错误android
我劝你加你试过什么,所以人们有东西与人开始工作之前一些代码因为你基本上问“我可以做X?”,因此下雨了。答案是99.9%肯定“是”。 – Maakep
我很困惑,为什么这篇文章有3个upvotes没有显示你的代码。我有一种感觉,因为你提到过'OnGUI'和[Mask](https:/ /),所以你正在混合/使用[IMGUI](https://docs.unity3d.com/Manual/GUIScriptingGuide.html) /docs.unity3d.com/ScriptReference/UI.Mask.html)组件。这将**不**的工作。没有你的代码很难准确地告诉你你在做什么。 – Programmer
void OnGUI(){GUI。按钮(新Rect(470,175,245,45),“Sample Button”)}。所以在这个函数里面我继续增加更多的按钮,增加约40个单位的PosY。在Unity场景中,我没有选中掩模图形 – Techbeginner