Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有多个按钮的统一滚动视图_C#_List_Unity3d_Button_Scrollview - Fatal编程技术网

C# 具有多个按钮的统一滚动视图

C# 具有多个按钮的统一滚动视图,c#,list,unity3d,button,scrollview,C#,List,Unity3d,Button,Scrollview,我正在开发一个游戏,我已经到了需要动态创建按钮列表的阶段 我的方法是创建一个滚动视图,然后通过脚本添加按钮 我已经创建了按钮预置。这个按钮的目的是在应用程序外部打开一个特定的链接,因此我创建了一个按钮预置,其中包含两个文本组件:一个是“显示路径”,这是我希望按钮显示的内容,另一个是我需要打开的链接,用户看不到 我遇到了几个问题: 我需要在浏览用户数据列表时创建按钮。我在另一个滚动视图中正确地显示按钮旁边的数据。但是,只创建了一个按钮 我无法访问预设链接文本组件以将其更改为需要打开的链接 谢谢你抽

我正在开发一个游戏,我已经到了需要动态创建按钮列表的阶段

我的方法是创建一个滚动视图,然后通过脚本添加按钮

我已经创建了按钮预置。这个按钮的目的是在应用程序外部打开一个特定的链接,因此我创建了一个按钮预置,其中包含两个文本组件:一个是“显示路径”,这是我希望按钮显示的内容,另一个是我需要打开的链接,用户看不到

我遇到了几个问题:

  • 我需要在浏览用户数据列表时创建按钮。我在另一个滚动视图中正确地显示按钮旁边的数据。但是,只创建了一个按钮
  • 我无法访问预设链接文本组件以将其更改为需要打开的链接

  • 谢谢你抽出时间

    我建议您创建自己的类来处理这个问题,这样在inspector中更容易可视化

    [System.Serializable]
    public class RelevantClassName
    {
        public string link = "http://defaultbackuplink";
        public string text = "Default content";
    
        [Space]
    
        public Transform button;
        public Transform contentHolder;
    }
    
    在单独的类中,您可以使用此信息生成滚动视图和按钮:

    public class UIController : MonoBehaviour
    {
        public List<RelevantClassName> contentToDisplay;
    
        [Header("References"]
        public Transform buttonParent;
        public Transform contentParent;
    
        public GameObject buttonPrefab;
        public GameObject contentPrefab;
    
        public void DisplayUI()
        {
            foreach(RelevantClassName content in contentToDisplay)
            {
                content.contentHolder = Instantiate(contentPrefab, contentParent);
                content.button = Instantiate(buttonPrefab, buttonParent);
    
                // And here you can run any custom changes, for example finding a text
                // component on the content holder and changing the description:
                content.contentHolder.GetComponent<Text>().text = content.text;
            }
        }
    
    公共类UIController:monobhavior
    {
    公共列表内容显示;
    [标题(“参考”]
    公共租赁;
    公共关系;家长;
    公共游戏对象按钮预览;
    公共游戏对象内容预制;
    公共void displayi()
    {
    foreach(contentToDisplay中的相关类名内容)
    {
    content.contentHolder=实例化(contentPrefab,contentParent);
    content.button=实例化(buttonpreab,buttonParent);
    //在这里,您可以运行任何自定义更改,例如查找文本
    //内容保持架上的组件并更改说明:
    content.contentHolder.GetComponent().text=content.text;
    }
    }
    
    当然,我强烈建议您使用池系统,如果您计划访问组件,请将其缓存在该类中


    希望这有帮助!

    感谢您的帮助,但实际上我刚刚检查了按钮,并且正在创建按钮,它们彼此重叠…我使用scrollview视口作为变换父对象,并从视口内的内容中删除了文本组件,这是错的吗?您可能希望内容成为按钮的变换父对象“视口”仅显示视口中当前内容的哪一部分。添加按钮时,您可能需要在添加更多按钮时扩展内容的大小。按照此逻辑,我只是将转换父级更改为滚动视图内容,但没有显示任何按钮,即使它们正在创建!我建议您u切换到使用垂直布局,以确保按钮和内容排列在一起。我创建了按钮预设和滚动视图。然后,我将滚动视图->视口->内容设置为父级。这是否错误?内容没有现在的组件,所有按钮都是在彼此的顶部创建的。我尝试添加一个内容大小为f的但它根本没有显示任何按钮。我不知道你说的垂直布局是什么意思。