脚本给出类似 _content.DestroyChildren() 的错误
Script gives error like _content.DestroyChildren()
我列出了这个房间,但我不知道该如何处理这个错误。我还有其他脚本,但我不知道是否应该为 DestroyChildren 或其他脚本编写一个。我应该删除 DestroyChildren 吗?或者我应该用什么来改变它?或者添加一些东西来工作?我在开始游戏时也遇到创建房间的错误,我应该在检查器中添加什么?
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.
}
}
}
}
}
您似乎缺少一些 'using' 或此扩展方法的某些实现。
我假设这个来自 https://github.com/Mckenon/Unity-Utils/blob/master/Utils/Transform.cs
您可以使用整个库,或者单个 class Transform.cs
或者编写您自己的扩展 class 和方法,如果您愿意的话:
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));
}
}
我列出了这个房间,但我不知道该如何处理这个错误。我还有其他脚本,但我不知道是否应该为 DestroyChildren 或其他脚本编写一个。我应该删除 DestroyChildren 吗?或者我应该用什么来改变它?或者添加一些东西来工作?我在开始游戏时也遇到创建房间的错误,我应该在检查器中添加什么?
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.
}
}
}
}
}
您似乎缺少一些 'using' 或此扩展方法的某些实现。
我假设这个来自 https://github.com/Mckenon/Unity-Utils/blob/master/Utils/Transform.cs
您可以使用整个库,或者单个 class Transform.cs
或者编写您自己的扩展 class 和方法,如果您愿意的话:
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));
}
}