脚本给出类似_content.DestroyChildren()的错误

时间:2020-03-28 11:12:51

标签: unity3d photon

我列出了这个会议室,但我不知道该怎么办。我还有其他脚本,但是我不知道我是否应该为DestroyChildren或其他内容编写脚本。我应该删除DestroyChildren吗?还是我应该做些改变?或添加一些东西来工作?当我开始游戏时,在创建房间时也会出现此错误,我应该在检查器中添加什么? enter image description here

using Photon.Pun;
using Photon.Realtime;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RoomListingsMenu : MonoBehaviourPunCallbacks
{
    [SerializeField]
    private Transform _content;
    [SerializeField]
    private RoomListing _roomListing;

    private List<RoomListing> _listings = new List<RoomListing>();
    private RoomsCanvases _roomsCanvases;


    public void FirstInitialize(RoomsCanvases canvases)
    {
        _roomsCanvases = canvases;
    }

    public override void OnJoinedRoom()
    {
        _roomsCanvases.CurrentRoomCanvas.Show();
        _content.DestroyChildren();
        _listings.Clear();
    }

    public override void OnRoomListUpdate(List<RoomInfo> roomList)
    {
        foreach (RoomInfo info in roomList)
        {
            //Removed from rooms list.
            if (info.RemovedFromList)
            {
                int index = _listings.FindIndex(x => x.RoomInfo.Name == info.Name);
                if (index != -1)
                {
                    Destroy(_listings[index].gameObject);
                    _listings.RemoveAt(index);
                }
            }
            //Added to rooms list.
            else
            {
                int index = _listings.FindIndex(x => x.RoomInfo.Name == info.Name);
                if (index == -1)
                {
                    RoomListing listing = Instantiate(_roomListing, _content);
                    if (listing != null)
                    {
                        listing.SetRoomInfo(info);
                        _listings.Add(listing);
                    }
                }
                else
                {
                    //Modify listing here.
                    //_listings[index].dowhatever.
                }
            }
        }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:3)

似乎您缺少此扩展方法的某些“使用”或某些实现。

我会假设这是来自https://github.com/Mckenon/Unity-Utils/blob/master/Utils/Transform.cs

您可以使用整个库,也可以使用单个类Transform.cs,也可以根据需要编写自己的扩展类和方法:

using UnityEngine;

public static class TransformExtensions
{
    public static void DestroyChildren(this Transform t)
    {
        for (int i = t.childCount - 1; i >= 0; i--)
            MonoBehaviour.Destroy(t.GetChild(i));
    }
}