Please help! Пожалуйста помогите!

I need each player to have a different skin (one of 10 prefabs) when entering a room, like in among us. If a player takes a skin, then the next players who enter the room will not be able to take this skin. Below is my code from MenuManager.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
using Photon.Realtime;
using ExitGames.Client.Photon; // Использование правильного пространства имен

public class MenuManager : MonoBehaviourPunCallbacks
{
    public InputField createInput;
    public InputField joinInput;

    public void CreateRoom()
    {
        RoomOptions roomOptions = new RoomOptions();
        roomOptions.MaxPlayers = 10;

        int[] occupiedPrefabs = new int[10];
        roomOptions.CustomRoomProperties = new ExitGames.Client.Photon.Hashtable() { { "occupiedPrefabs", occupiedPrefabs } };
        roomOptions.CustomRoomPropertiesForLobby = new string[] { "occupiedPrefabs" };

        PhotonNetwork.CreateRoom(createInput.text, roomOptions, TypedLobby.Default);
    }

    public void JoinRoom()
    {
        PhotonNetwork.JoinRoom(joinInput.text);
    }

    public override void OnJoinedRoom()
    {
        PhotonNetwork.LoadLevel("Game");
        AssignUniquePrefab();
    }

    void AssignUniquePrefab()
    {
        if (PhotonNetwork.CurrentRoom.CustomProperties.TryGetValue("occupiedPrefabs", out object occupiedPrefabsObject))
        {
            int[] occupiedPrefabs = (int[])occupiedPrefabsObject;
            int prefabIndex = -1;

            // Находим первый свободный префаб
            for (int i = 0; i < occupiedPrefabs.Length; i++)
            {
                if (occupiedPrefabs[i] == 0)
                {
                    prefabIndex = i;
                    occupiedPrefabs[i] = 1;
                    break;
                }
            }

            // Обновляем свойства комнаты
            PhotonNetwork.CurrentRoom.SetCustomProperties(new ExitGames.Client.Photon.Hashtable() { { "occupiedPrefabs", occupiedPrefabs } });

            if (prefabIndex != -1)
            {
                // Сохраняем индекс префаба в свойства игрока
                PhotonNetwork.LocalPlayer.SetCustomProperties(new ExitGames.Client.Photon.Hashtable() { { "prefabIndex", prefabIndex } });

                // Загружаем префаб игрока
                string prefabName = prefabIndex == 0 ? "Player" : "Player" + (prefabIndex + 1);
                Vector3 spawnPosition = GetRandomSpawnPosition(); // Ваша логика определения позиции спавна
                PhotonNetwork.Instantiate(prefabName, spawnPosition, Quaternion.identity);
            }
            else
            {
                Debug.LogError("Нет доступных префабов!");
            }
        }
        else
        {
            Debug.LogError("Свойства комнаты не содержат 'occupiedPrefabs'.");
        }
    }

    public override void OnPlayerLeftRoom(Player otherPlayer)
    {
        base.OnPlayerLeftRoom(otherPlayer);

        if (PhotonNetwork.CurrentRoom.CustomProperties.TryGetValue("occupiedPrefabs", out object occupiedPrefabsObject))
        {
            int[] occupiedPrefabs = (int[])occupiedPrefabsObject;

            // Найдите префаб, который использовал этот игрок, и освободите его
            int prefabIndex = GetPlayerPrefabIndex(otherPlayer); // Ваша логика определения префаба игрока
            if (prefabIndex != -1)
            {
                occupiedPrefabs[prefabIndex] = 0;
                PhotonNetwork.CurrentRoom.SetCustomProperties(new ExitGames.Client.Photon.Hashtable() { { "occupiedPrefabs", occupiedPrefabs } });
            }
        }
    }

    // Пример логики для определения индекса префаба игрока
    int GetPlayerPrefabIndex(Player player)
    {
        // Здесь вы можете реализовать свою логику для определения префаба игрока
        // Например, сохранить индекс префаба в CustomProperties игрока
        if (player.CustomProperties.TryGetValue("prefabIndex", out object prefabIndexObject))
        {
            return (int)prefabIndexObject;
        }
        return -1;
    }

    Vector3 GetRandomSpawnPosition()
    {
        // Ваша логика определения позиции спавна
        return new Vector3(Random.Range(-5f, 5f), Random.Range(-5f, 5f), 0f);
    }
}