Задать вопрос
  • Как вывести число в виде эмодзи?

    @Bruh_Bruh Автор вопроса
    ambisinister One, ну я в самом вопросе показывал пример. Проблема уже решена.
  • Как вывести число в виде эмодзи?

    @Bruh_Bruh Автор вопроса
    Никита karpov, работает, спасибо большое!
  • Как вывести число в виде эмодзи?

    @Bruh_Bruh Автор вопроса
    Так просто выводит unicode и все
  • Как вывести число в виде эмодзи?

    @Bruh_Bruh Автор вопроса
    Для эмодзи игральной кости работают оба варианта:
    game_die_emoji = ":game_die:"
        bot.send_message(message.chat.id, emoji.emojize(game_die_emoji))

    game_die_emoji = "\U0001F3B2"
        bot.send_message(message.chat.id, game_die_emoji)

    Для единицы первый вариант вообще так и выводит
    :one:
    , а второй как выводит я уже показывал
    one = ":one:"
        bot.send_message(message.chat.id, emoji.emojize(one))

    one = "\U00000031 \U000020E3"
        bot.send_message(message.chat.id, one)
  • Как вывести число в виде эмодзи?

    @Bruh_Bruh Автор вопроса
    В код вставлять пробовал, но вставляется не код эмодзи, а просто символы, то есть, если скопировать нужный эмодзи, например, ту же единицу, то в коде это выглядит как 1 [] . Как-то так.
    А вот что за r не знаю.
  • Почему парсер возвращает пустой список?

    @Bruh_Bruh Автор вопроса
    Да, теперь все прекрасно работает, спасибо! Я так понимаю, что по дефолту передавался мой user-agent? Можешь, пожалуйста, рассказать почему он не подходит, ну или ссылку на какую-нибудь статью кинуть?
  • Почему падает fps в здании?

    @Bruh_Bruh Автор вопроса
    Ente, сработало, но просадка все равно осталась в едиторе, зато уже в билде как было 120, так и остается 120. Спасибо за совет.
  • Почему падает fps в здании?

    @Bruh_Bruh Автор вопроса
    Согласен, но все же не хочется, чтобы кадры так проседали.
  • Почему падает fps в здании?

    @Bruh_Bruh Автор вопроса
    Farawa, пока совсем немного работал с профайлером, так что не всю его информацию могу понять
    61b8926a4d7ec164138431.png
    61b892e609ba4978505391.png
    P.S. При входе в здание колво треугольников и вершин увеличивается в 1.5-2 раза
  • Почему List.Count возвращает неправильное колво элементов?

    @Bruh_Bruh Автор вопроса
    freeExec, в общем там проблема немного в другом, сразу что-то не допёр, простите за беспокойство.
  • Почему List.Count возвращает неправильное колво элементов?

    @Bruh_Bruh Автор вопроса
    freeExec, не, вру, по дебагам все правильно, там просто же это функция вызывается с двух объектов, но вот почему там только 1 элемент...
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    Vitaliy Antipin, если делать второй, то ничего не строится => grid = null. Поэтому надо разбираться с порядком скриптов.
    Почему позже, если я создаю Grid в Awake, потом идет его конструктор, а затем уже в Update If(Input...), или я что-то путаю?
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    GavriKos, значит, дебажить в Grid и смотреть через консоль?
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    GavriKos, понял, искать ошибку где-то там? В коде класса Grid? Но вот как на пк все работает, а на телефоне ошибка?
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    GavriKos,
    spoiler

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Grid : MonoBehaviour
    {
        public int width;
        public int height;
        private int cellSize;
    
        private int hasPlayed;
    
        private BuildingSO building;
        private GameObject buildingSystem;
        private GridBuildingSystem gridBuildingSystem;
    
        private int[,] gridArray;
        public bool[,] fullnessArray { get; private set; }
        public string[,] namesArray { get; private set; }
        public int[,] xPositionArray { get; private set; }
        public int[,] zPositionArray { get; private set; }
    
        public void Awake()
        {
            hasPlayed = 0;
        }
    
        public Grid(int width, int height, int cellSize)
        {
            this.width = width;
            this.height = height;
            this.cellSize = cellSize;
    
            gridArray = new int[width, height];
            fullnessArray = new bool[width, height];
            namesArray = new string[width, height];
            xPositionArray = new int[width, height];
            zPositionArray = new int[width, height];
    
            buildingSystem = GameObject.FindGameObjectWithTag("GridBuildingSystem");
            gridBuildingSystem = buildingSystem.GetComponent<GridBuildingSystem>();
    
            //PlayerPrefs.DeleteAll();
            hasPlayed = PlayerPrefs.GetInt("FirstRun");
            if (hasPlayed == 1)
            {
                GridData data = SaveSystem.LoadGrid();
    
                for (int x = 0; x < gridArray.GetLength(0); x++)
                {
                    for (int z = 0; z < gridArray.GetLength(1); z++)
                    {
                        fullnessArray[x, z] = data.fullnessArray[x, z];
                        namesArray[x, z] = data.namesArray[x, z];
                        xPositionArray[x, z] = data.xPositionArray[x, z];
                        zPositionArray[x, z] = data.zPositionArray[x, z];
    
                        if (namesArray[x, z] != null)
                        {
                            CreateBuildingOnLoad(namesArray[x, z], xPositionArray[x, z], zPositionArray[x, z]);
                        }
                    }
                }
            }
            else
            {
                for (int x = 0; x < gridArray.GetLength(0); x++)
                {
                    for (int z = 0; z < gridArray.GetLength(1); z++)
                    {
                        fullnessArray[x, z] = false;
                        namesArray[x, z] = null;
                    }
                }
            }
            
        }
    
        private void CreateBuildingOnLoad(string buildingName, int xPosition, int zPosition)
        {
            if (buildingName == gridBuildingSystem.buildingsSO[0].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[0];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[1].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[1];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[2].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[2];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[3].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[3];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[4].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[4];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[5].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[5];
                CreateBuilding(xPosition, zPosition, building);
            }
            else if (buildingName == gridBuildingSystem.buildingsSO[6].prefab.name)
            {
                building = gridBuildingSystem.buildingsSO[6];
                CreateBuilding(xPosition, zPosition, building);
            }
        }
    
        private void CreateBuilding(int xPosition, int zPosition, BuildingSO building)
        {
            Vector3 position = new Vector3(xPosition, 0, zPosition);
            Instantiate(building.prefab, position, Quaternion.identity);
            SetBuilding(xPosition / cellSize, zPosition / cellSize, building.width, building.height, building);
        }
    
        public Vector3 GetGridWorldPosition(int x, int z)
        {
            return new Vector3(x, 0, z) * cellSize;
        }
    
        public void GetGridXZ(Vector3 worldPosition, out int x, out int z)
        {
            x = Mathf.FloorToInt(worldPosition.x / cellSize);
            z = Mathf.FloorToInt(worldPosition.z / cellSize);
        }
    
        public bool GetBuilding(int x, int z, int buildingWidth, int buildingHeight)
        {
            if (x >= 0 && x <= width && x + buildingWidth - 1 <= width && z >= 0 && z <= height && z + buildingHeight - 1 <= height)
            {
                int fullGridCells = 0;
    
                for (int ix = 1; ix <= buildingWidth; ix++)
                {
                    for (int iz = 1; iz <= buildingHeight; iz++)
                    {
                        if (fullnessArray[x + buildingWidth - ix, z + buildingHeight - iz] == false)
                        {
                        }
                        else
                        {
                            fullGridCells++;
                        }
                    }
                }
    
                if (fullGridCells == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
    
            }
            else
            {
                return true;
            }
        }
    
        public void SetBuilding(int x, int z, int buildingWidth, int buildingHeight, BuildingSO building)
        {   
            for (int ix = 1; ix <= buildingWidth; ix++)
            {
                for (int iz = 1; iz <= buildingHeight; iz++)
                {
                    fullnessArray[x + buildingWidth - ix, z + buildingHeight - iz] = true;
                }
            }
            
            namesArray[x, z] = building.prefab.name;
            xPositionArray[x, z] = x * cellSize;
            zPositionArray[x, z] = z * cellSize;
            hasPlayed = 1;
            PlayerPrefs.SetInt("FirstRun", hasPlayed);
            SaveSystem.SaveGrid(this);
        }
    
        public int GetWidth()
        {
            return width;
        }
    
        public int GetHeight()
        {
            return height;
        }
    }

  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    GavriKos, для пк это сработало, хотя на самом деле работало и до этого, просто я пытался повторить успех на телефоне и получал ошибку:
    NullReferenceException: Object reference not set to an instance of an object
    04-21 20:13:00.721 25571 25592 E Unity : at Grid..ctor (System.Int32 width, System.Int32 height, System.Int32 cellSize) [0x000ba] in <5810383e73bb481ba5be82b999dfdb8e>:0
    04-21 20:13:00.721 25571 25592 E Unity : at GridBuildingSystem.Awake () [0x00000] in <5810383e73bb481ba5be82b999dfdb8e>:0
    Делал так и смотрел через консоль + usb результат:
    if (Input.GetMouseButtonDown(0))
                {
                    Debug.Log("2");
                    int width = grid.GetWidth();
                    Debug.Log(width + " width");
                }

    Двойку выводит, а width - нет. Думаю, что связано это с классом Grid (ошибку с null написал вверху )
    Потом что-то переставил и получил похожую ошибку на пк, которую и написал в вопросе, подумал, что если решу ее на пк, то и на телефоне тоже исчезнет, но нет.
    Прилагаю самый первый вариант кода, который отлично работает на пк, но не работает на телефоне, может быть, что-то упустил...
    spoiler

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class GridBuildingSystem : MonoBehaviour
    {
        private Grid grid;
    
        [SerializeField] private Camera cam;
    
        private BuildingSO building;
        public BuildingSO[] buildingsSO;
    
        private void Start()
        {
            building = buildingsSO[0];
        }
    
        private void Update()
        {
            grid = GameManager.grid;
    
            ChooseBuilding();
    
            //if (GameManager.buildMode == true)
            //{
                //if (Input.touchCount >= 1)
                if (Input.GetMouseButtonDown(0))
                {
                    int width = grid.GetWidth();
                    int height = grid.GetHeight();
                    //grid.GetGridXZ(GetTouchWorldPosition(), out int x, out int z);
                    grid.GetGridXZ(GetMouseWorldPosition(), out int x, out int z);
                    if (x <= width && z <= height && x >= 0 && z >= 0)
                    {
                        bool hasBuilding = grid.GetBuilding(x, z, building.width, building.height);
                        if (hasBuilding == false)
                        {
                            Instantiate(building.prefab, grid.GetGridWorldPosition(x, z), Quaternion.identity);
                            grid.SetBuilding(x, z, building.width, building.height, building);
                        }
                        else
                        {
                            Debug.Log("You cannot build here!");
                        }
                    }
                    else
                    {
                        Debug.Log("You cannot build here!");
                    }
                }
            //}
        }
    
        private Vector3 GetTouchWorldPosition()
        {
            Ray ray = cam.ScreenPointToRay(Input.GetTouch(0).position);
            if (Physics.Raycast(ray, out RaycastHit hit, 999f))
            {
                return hit.point;
            }
            else
            {
                return Vector3.zero;
            }
        }
    
        private Vector3 GetMouseWorldPosition()
        {
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out RaycastHit hit, 999f))
            {
                return hit.point;
            }
            else
            {
                return Vector3.zero;
            }
        }
    
        // For PC.
        private void ChooseBuilding()
        {
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                building = buildingsSO[0];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                building = buildingsSO[1];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                building = buildingsSO[2];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                building = buildingsSO[3];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha5))
            {
                building = buildingsSO[4];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha6))
            {
                building = buildingsSO[5];
            }
            else if (Input.GetKeyDown(KeyCode.Alpha7))
            {
                building = buildingsSO[6];
            }
        }
    }

  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    twobomb, рад за тебя, продолжай в том же духе.
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    twobomb, хочешь сказать, что у тебя никогда проблем не было, и все получалось с первого раза?
  • Почему значение созданного класса равно null?

    @Bruh_Bruh Автор вопроса
    twobomb, ты вообще о чем? Я же сказал, что проблема не в int, а именно класс равен null...