| 
				
				Не работает строчка массива 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
  потому что философия философией, но если сможешь реально помочь в этом вопросе буду очень признателен  
 |  
| 
 | 
 |    |     
		
		 
 |