Скрипт выдает ошибку вроде _content.DestroyChildren () - PullRequest
0 голосов
/ 28 марта 2020

Я делаю этот список номеров и не понимаю, что мне делать с этой ошибкой. У меня есть другие сценарии, но я не знаю, должен ли я сделать их для 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 Ответ

3 голосов
/ 28 марта 2020

Похоже, что вам не хватает некоторого «использования» или какой-либо реализации этого метода расширения.

Я предполагаю, что это из 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));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...