| 
	
		
		
			| Не работает строчка массива Transform [РЕШЕНО] |  |  |  | 
| serezha | Дата: Вторник, 07 Декабря 2021, 19:03 | Сообщение # 1 |  |   был не раз Сейчас нет на сайте | Вот что сделал: public Transform[] arrayOfSpawnPoints, заполнил тремя GO пустышками в инспекторе.
 В public GameObject PlayerKubik перетащил GO куб в инспекторе.
 Для строки спавна в целях эксперемента назначил клавишу, когда нажимаю эту клавишу, то GO "PlayerKubik" спавнится только в точке элемента 0 Transform[] и так постоянно, всегда только в одной этой точке, а нужно чтобы и в других тоже спавнился. Перепробовал разные комбинации transform, но всё равно не работает.
 
 Что не так я делаю в этой строчке массива Transform:
 
 Instantiate (PlayerKubik, arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]);
 
 P.S. До этого вообще GO "PlayerKubik" проваливался сквозь землю.
 
 Вопрос решен!
 
 
 Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:53 |  |  |  |  |  | 
| drcrack | Дата: Вторник, 07 Декабря 2021, 20:01 | Сообщение # 2 |  | старожил Сейчас нет на сайте | Цитата  Instantiate (PlayerKubik, arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)]);в перегрузке которую ты юзаешь второй параметр это родитель для нового обьекта
 а надо так:
 
 Код var spawn = arrayOfSpawnPoints [Random.Range (0, arrayOfSpawnPoints.Length)];
 Instantiate (PlayerKubik, spawn.position, spawn.rotation);
 
 |  |  |  |  |  | 
| serezha | Дата: Вторник, 07 Декабря 2021, 20:30 | Сообщение # 3 |  |   был не раз Сейчас нет на сайте | drcrack, Спасибо большое! Как раз то что мне нужно!  Еще хочу спросить, а можно ли это в одну строчку записать? |  |  |  |  |  | 
| drcrack | Дата: Вторник, 07 Декабря 2021, 22:33 | Сообщение # 4 |  | старожил Сейчас нет на сайте | Цитата  Еще хочу спросить, а можно ли это в одну строчку записать?простым способом наверно нельзя, по крайней мере ничего в голову сходу не приходит
 а зачем?
 |  |  |  |  |  | 
| DmitriyIM | Дата: Среда, 08 Декабря 2021, 07:50 | Сообщение # 5 |  |   частый гость Сейчас нет на сайте | Цитата serezha (  )  можно ли это в одну строчку записать?
 №1: ... (по словам drcrack: нет такой перегрузки у Instantiate; проверю, напишу)
 
 №2:
 
 Код Instantiate(PlayerKubik, arrayOfSpawnPoints[Random.Range(0, arrayOfSpawnPoints.Length)].position, Quaternion.identity);
 
 Сообщение отредактировал DmitriyIM - Среда, 08 Декабря 2021, 15:42 |  |  |  |  |  | 
| drcrack | Дата: Среда, 08 Декабря 2021, 09:07 | Сообщение # 6 |  | старожил Сейчас нет на сайте | DmitriyIM, вариант 1 не скомпилируется (нет такой перегрузки у Instantiate), вариант 2 игнорирует вращение спауна (тс не писал явно что ему нужно вращение, но в его первом варианте, хоть и кривом, вращение было, в моем тоже было, и если ты хочешь это записать в одну строчку, учитывай вращение тоже) 
 
 Сообщение отредактировал drcrack - Среда, 08 Декабря 2021, 09:11 |  |  |  |  |  | 
| DmitriyIM | Дата: Среда, 08 Декабря 2021, 13:42 | Сообщение # 7 |  |   частый гость Сейчас нет на сайте | Цитата drcrack (  )  вариант 1 не скомпилируется (нет такой перегрузки у Instantiate)
 Точно?
  По информации из https://docs.unity3d.com/ScriptReference/Object.Instantiate.html он должен быть, но сейчас нет возможности это проверить, поэтому пока его убрал. 
 
 Цитата drcrack (  )  если ты хочешь это записать в одну строчку, учитывай вращение тоже) Ну в качестве альтернативы можно вместо переменной написать свою функцию
  а в ней уже брать позицию и поворот. |  |  |  |  |  | 
| drcrack | Дата: Среда, 08 Декабря 2021, 18:20 | Сообщение # 8 |  | старожил Сейчас нет на сайте | Цитата  https://docs.unity3d.com/ScriptReference/Object.Instantiate.html он должен бытьв перегрузке с 2 параметрами второй из них это родитель для нового обьекта. ее конечно тоже можно использовать но обьект будет создаваться внутри спауна что не очень удобно
 
 
 Цитата  Ну в качестве альтернативы можно вместо переменной написать свою функцию    а в ней уже брать позицию и поворот.можно. но не в одну строчку
 
 
 Сообщение отредактировал drcrack - Среда, 08 Декабря 2021, 18:23 |  |  |  |  |  | 
| serezha | Дата: Среда, 08 Декабря 2021, 18:45 | Сообщение # 9 |  |   был не раз Сейчас нет на сайте | Цитата  Instantiate(PlayerKubik, arrayOfSpawnPoints[Random.Range(0, arrayOfSpawnPoints.Length)].position, Quaternion.identity);DmitriyIM, спасибо, строка работает!
  Кстати, я пытался в самом начале до создания темы делать команду и ставить в самый конец "Quaternion.identity", но юнька ругалась страшно))) я не догадался поставить ".position" перед поворотом. 
 Цитата drcrack (  )  простым способом наверно нельзя, по крайней мере ничего в голову сходу не приходита зачем?
ИМХО: Для удобства
  Просто заметил, что если изначально писать строчкой, а не в столбик то в скрипте, где например много команд, не придется долго крутить колесиком мыши или листать сбоку, чтобы модифицировать нужный участок кода т.е. 50 строк более лучше..я бы сказал эстетичней что ль смотрится:) чем 150 строк. В любом случае Всем большая благодарность, вопрос решен!
   
 
 Сообщение отредактировал serezha - Среда, 08 Декабря 2021, 18:49 |  |  |  |  |  | 
| Robinzon787 | Дата: Четверг, 09 Декабря 2021, 12:16 | Сообщение # 10 |  |   Construct'орщик Сейчас нет на сайте | Цитата serezha (  )  ИМХО: Для удобства    Просто заметил, что если изначально писать строчкой, а не в столбик то в скрипте, где например много команд, не придется долго крутить колесиком мыши или листать сбоку, чтобы модифицировать нужный участок кода т.е. 50 строк более лучше..я бы сказал эстетичней что ль смотрится:) чем 150 строк.
 Для этого ты выносишь соответствующий код в отдельный метод с хорошим, говорящим названием, опускаешь этот метод ниже в коде, чтобы в глаза не бросался сразу. Когда в следующий раз обратишься к своему коду увидишь метод, который по названию тебе скажет что он делает. Если нужно изменить то перейдешь в метод и изменишь. Писать в одну строку плохая практика, сильно нагружает код. Иногда лучше наоборот разделить код как можно больше, повышает читаемость и нагржуенность строки. Может сейчас ты так и не думаешь, но когда таких участков будет больше и ты придешь к коду через пару недель или даже месяцев, то поймешь что ошибался по поводу 50 длинных vs 150 коротких строк.
 
 Переустановил ос - начал жизнь с чистого листа.
 |  |  |  |  |  | 
| serezha | Дата: Воскресенье, 19 Декабря 2021, 21:29 | Сообщение # 11 |  |   был не раз Сейчас нет на сайте | Robinzon787, про написание отдельного метода мне известно  это самое первое что приходит на ум, видимо я не совсем правильно изложил свою мысль  Размножение методов не подходит, так как опять добавляет лишние строки, плюс то что говорите "метод опускать ниже в коде чтобы в глаза не бросался" как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть...  Я имел ввиду чтобы участки кода разложить по полочкам в скрипте для легкого восприятия человеком, а когда отдельные куски кода находятся в разных методах как предлагаете, то тогда сложно "ловить" что куда чего отправляется или меняется, прыгая при чтении кода из одного места в другое...может размножение методов кому то и будет удобно, но не мне
   
 
 Сообщение отредактировал serezha - Воскресенье, 19 Декабря 2021, 22:42 |  |  |  |  |  | 
| drcrack | Дата: Понедельник, 20 Декабря 2021, 09:20 | Сообщение # 12 |  | старожил Сейчас нет на сайте | Цитата  как раз и будет лишним действием опять крутить к низу кода чтобы вспомнить что туда засунул в это метод, а учитывая что если этих методов сотни, то это будет просто жесть... %)в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо
 
 
 Цитата  может размножение методов кому то и будет удобно, но не мнепосмотрим на тебя через годик-другой
   
 
 Сообщение отредактировал drcrack - Понедельник, 20 Декабря 2021, 09:22 |  |  |  |  |  | 
| serezha | Дата: Понедельник, 20 Декабря 2021, 15:00 | Сообщение # 13 |  |   был не раз Сейчас нет на сайте | Цитата drcrack (  )  в любой нормальной IDE есть возможность как быстро перейти к реализации метода, так и вернуться обратно, так что крутить ничего не надо
 Я не про возможность автоматической прокрутке говорю, а про перемещение из одного участка в другой в плане читаемости кода человеком т.е. быстрого его понимания человеком.
 
 
 Цитата drcrack (  )  посмотрим на тебя через годик-другой
 Я не один год занимаюсь написанием кода и уже давно проверено что размножение методов не лучший вариант! Спорить какой лучше цвет бессмысленно, так как каждый программист по своему пишит код как ему удобнее.
 
 А если по делу, если хочешь реально помочь уважаемый знаток кода
  то тут тема актуальна 
 https://gcup.ru/forum/59-103628-1
 
 потому что философия философией, но если сможешь реально помочь в этом вопросе буду очень признателен
   |  |  |  |  |  
 |