Unity:技巧:通过Update将多线程或异步的东西在主线程中处理

目录

1.目的

1.1 通过Update将多线程或异步的东西在主线程中处理

2.参考

3.注意

4.操作:成功

4.1新建变量,让其作为异步、主线程中间的桥梁

4.2. 再做一个异步的函数,专门处理回调函数事件

4.3. 在Update中将异步和主线程关联起来


1.目的

1.1 通过Update将多线程或异步的东西在主线程中处理

2.参考

3.注意

4.操作:成功

4.1新建变量,让其作为异步、主线程中间的桥梁

    /// <summary>UserData对象,目的为了异步处理【91在客户单解析房间列表信息,并加载房间列表UI:添加】</summary>
    private List<UserData> udList = null;

4.2. 再做一个异步的函数,专门处理回调函数事件

 /// <summary>
    /// 异步加载房间【Author:XZY Time:2022 04 14】【91在客户单解析房间列表信息,并加载房间列表UI:添加】
    /// </summary>
    /// <param name="udList"></param>
    public void LoadRoomItemSync(List<UserData> udList)
    {
        this.udList = udList; //异步加载时候需要使用此来赋值【91在客户单解析房间列表信息,并加载房间列表UI】
    }

    /// <summary>
    /// 加载房间【Author:XZY Time:2022 04 02】【84通过代码动态创建房间列表:添加】
    /// </summary>
    /// <param name="count">加载房间的个数</param>
    private void LoadRoomItem(List <UserData> udList)
    {
        int count=0;
        for (int i = 0; i < count; i++)
        {
            GameObject roomItem = GameObject.Instantiate(roomItemPrefab);//实例化对象【84通过代码动态创建房间列表:添加】
            roomItem.transform.SetParent(roomLayout.transform);//设置父物体【84通过代码动态创建房间列表:添加】

            //设置 roomLayout 的高度,让其能显示所有的房间
            int roomCount = GetComponentsInChildren<RoomItem>().Length;//得到所有房间数量【84通过代码动态创建房间列表:添加】
            Vector2 size = roomLayout.GetComponent<RectTransform>().sizeDelta;//得到RectTransform组件的大小【84通过代码动态创建房间列表:添加】
            roomLayout.GetComponent<RectTransform>().sizeDelta = new Vector2(size.x,
                roomCount * (roomItemPrefab.GetComponent<RectTransform>().sizeDelta.y + roomLayout.spacing));//将 roomLayout 的高度变高,能显示所有房间【84通过代码动态创建房间列表:添加】
        }
    }

4.3. 在Update中将异步和主线程关联起来

    private void Update()
    {
        if (udList!=null)
        {
            LoadRoomItem(udList);//【91在客户单解析房间列表信息,并加载房间列表UI:添加】
            udList = null;//【91在客户单解析房间列表信息,并加载房间列表UI:添加】
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_40544338/article/details/124172339