Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
allods | Дата: Суббота, 30 Августа 2014, 14:48 | Сообщение # 6461 |
почти ветеран
Сейчас нет на сайте
| помогите плиз занести ники игроков в SelectionGrid
Код foreach (PhotonPlayer playersInRoom in PhotonNetwork.playerList) { /*if(GUILayout.Button(playersInRoom.name)) { }*/ } playerSelect = GUILayout.SelectionGrid(playerSelect, playersNames, 1);///////////выбор игрока
Раньше это было кнопкой, но мне понадобилось сделать SelectionGrid с никами.
Пытался по разному замутить. Пытался их добавить в Лист а потом в SelectionGrid через for i
Можно ли это вообще сделать ?
Добавлено (30.08.2014, 14:48) --------------------------------------------- Кто может подсказать
как проверить все переменные в массиве и если все переменные true то едем дальше?
У меня есть bool список, при нажатии на кнопку если все переменные true в списке то загружаем уровень . Вроде просто, но я не помню как делал
Сообщение отредактировал allods - Суббота, 30 Августа 2014, 14:48 |
|
| |
GantZ_Yaka | Дата: Суббота, 30 Августа 2014, 16:27 | Сообщение # 6462 |
почетный гость
Сейчас нет на сайте
| Цитата allods ( ) как проверить все переменные в массиве и если все переменные true то едем дальше? Код bool ok = true; foreach (bool a in List) { if (!a) ok = false; }
if (ok) ...
так еще можно: if (!list.Contains(false)) // если список не содержит false
Сообщение отредактировал GantZ_Yaka - Суббота, 30 Августа 2014, 16:38 |
|
| |
allods | Дата: Суббота, 30 Августа 2014, 19:31 | Сообщение # 6463 |
почти ветеран
Сейчас нет на сайте
| Блин не выходит не фига . Получаю переменную у каждого игрока bool , если у всех true то грузим уровень .
Код for(p=0;p<playersInRoom.Length;p++) {
ArrayList trueGO = new ArrayList(); trueGO.Add((bool)playersInRoom[p].customProperties["rdy"]); if(!trueGO.Contains(false)) { load=true; Hashtable someCustomPropertiesToSet = new Hashtable() {{"load", load}}; playersInRoom[p].SetCustomProperties(someCustomPropertiesToSet); } }
По разному пробовал. Грузит у тех у кого true забив на тех у кого false.
Сообщение отредактировал allods - Суббота, 30 Августа 2014, 19:33 |
|
| |
GantZ_Yaka | Дата: Суббота, 30 Августа 2014, 20:23 | Сообщение # 6464 |
почетный гость
Сейчас нет на сайте
| Значит ошибка где-то... через debug ищи После вот этого: trueGO.Add((bool)playersInRoom[p].customProperties["rdy"]); можно написать foreach bool вывестии в дебаг значение, и посмотреть в консоле, что там за список получется trueGO для каждого игрока.
|
|
| |
allods | Дата: Суббота, 30 Августа 2014, 21:13 | Сообщение # 6465 |
почти ветеран
Сейчас нет на сайте
| выводит все правильно 1 true и 1 false если два игрока. И запускает только у того у кого true
|
|
| |
MANMANA | Дата: Суббота, 30 Августа 2014, 23:55 | Сообщение # 6466 |
почти ветеран
Сейчас нет на сайте
| }//Цитата allods ( ) И запускает только у того у кого true и правильно делает: "ArrayUtility.Contains Determines if the array contains the item." Итого:
if(!trueGO.Contains(false)) //если элемент массива != "false" (т.е. он равен "true"), то для него выполняем следующий код (по сути код будет выполнен для каждого элемента массива, который = true): { //твой код }
итого - грузим только тех, кто true
вот код для демонстрации работы Contains:
Код using UnityEngine; using System.Collections;
public class myContains : MonoBehaviour { public string[] playersInRoom = {"Петя", "Миша", "Петро", "Василь", "Монстр", "Зомби", "ХСГ", "ДД", "ПолныйП"}; public bool vari; // Use this for initialization void Start () { for (int p=0; p<playersInRoom.Length; p++) { ArrayList trueGO = new ArrayList(); if (Random.Range (0,10)>5) { vari = true; } else vari = false; trueGO.Add(vari); if(!trueGO.Contains(false)) { print(p+"ЛОЖЬ!"); } else print(p+"ИСТИННО ТАК!"); } } }
результатом будет 1ИСТИННО ТАК 2ИСТИННО ТАК 3ЛОЖЬ! и т.д., в зависимости от Random.Range...
так что нужно делать через перебор foreach(), как предложил в первый раз GantZ_Yaka
перебираешь весь массив через foreach()
bool ok = true; //true значит то, что в массиве нет ни одного false foreach (bool a in List) { if (!a) ok = false; //в массиве попался хоть один элемент false, то смотри по проверке if(ok) }
if (ok) //если в массиве нет ни одного элемента false, то { //тут грузи все элементы из массива игроков playersInRoom, или устанавливай для них проперти, как ты делал в свое коде. Cоответственно, не забывай для всех элементов массива это сделать ... }
как-то так
Код for(p=0;p<playersInRoom.Length;p++) {
ArrayList trueGO = new ArrayList(); trueGO.Add((bool)playersInRoom[p].customProperties["rdy"]); }
foreach (bool a in trueGO) { if (!a) load = false; }
if (load) { if (int i=0; i<playersInRoom.Length; i++) { Hashtable someCustomPropertiesToSet = new Hashtable() {{"load", load}}; //за эти две строки не скажу, т.к. не знаю, чего ты здесь добиваешься : ) playersInRoom[i].SetCustomProperties(someCustomPropertiesToSet); // } }
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Воскресенье, 31 Августа 2014, 00:06 |
|
| |
allods | Дата: Понедельник, 01 Сентября 2014, 06:25 | Сообщение # 6467 |
почти ветеран
Сейчас нет на сайте
| Теперь как только хоть один игрок rdy то у всех сразу грузит уровень .
Код playersInRoom=PhotonNetwork.playerList; for(p=0;p<playersInRoom.Length;p++) { ArrayList trueGO = new ArrayList(); trueGO.Add((bool)playersInRoom[p].customProperties["rdy"]); load=true; foreach (bool a in trueGO) { if (!a) load = false; } } if (load) { for (i=0;i<playersInRoom.Length;i++) { if(creator) { Hashtable someCustomPropertiesToSet = new Hashtable() {{"load", true}}; playersInRoom[i].SetCustomProperties(someCustomPropertiesToSet); } } } Добавлено (01.09.2014, 06:25) --------------------------------------------- не все работает, все ок все норм Спасибо
Сообщение отредактировал allods - Воскресенье, 31 Августа 2014, 08:38 |
|
| |
kinoooshnik | Дата: Понедельник, 01 Сентября 2014, 10:51 | Сообщение # 6468 |
почетный гость
Сейчас нет на сайте
| Привет! У меня вопрос, можно ли сделать в коде что то похожее на это: Код void Update(){ if(z == false){ void OnMouseDown(){ n = 1; } } } ???
|
|
| |
NEBR | Дата: Понедельник, 01 Сентября 2014, 13:30 | Сообщение # 6469 |
почти ветеран
Сейчас нет на сайте
| OnMouseDown() по моему вызывается только по клику мышкой на объект с коллайдером, сомневаюсь что можно его вызвать таким способом. Опиши что нужно
King Size #Gamiron12
Сообщение отредактировал NEBR - Понедельник, 01 Сентября 2014, 13:32 |
|
| |
GeorgeThreeD2 | Дата: Понедельник, 01 Сентября 2014, 13:33 | Сообщение # 6470 |
частый гость
Сейчас нет на сайте
| kinoooshnik, Ну да, просто поменять местами и немного изменить: Код
void Update() { if(Input.GetMouseButtonDown(0) && !z) { n=1; } }
А если нужно выполнение по нажатии мышкой на объекте, тогда не нужен Update... Код void OnMouseDown() { if(!z) { n=1; } } А если хочешь чтобы повторялось при условии, что мышка наведена и нажата, и при этом все было в update, тогда посылай луч в позицию мыши, проверяй пересечение и по примеру выше выставляй условия и действия в update
Сообщение отредактировал GeorgeThreeD2 - Понедельник, 01 Сентября 2014, 13:38 |
|
| |
kinoooshnik | Дата: Понедельник, 01 Сентября 2014, 21:49 | Сообщение # 6471 |
почетный гость
Сейчас нет на сайте
| GeorgeThreeD2, второй способ помог, спасибо!
|
|
| |
DantorS | Дата: Вторник, 02 Сентября 2014, 00:28 | Сообщение # 6472 |
заслуженный участник
Сейчас нет на сайте
| 1. Если у меня есть гг, как определить на сколько он повернулся по оси x от изначальной позиции (t-pose)? 2. Как получить значение от 0 до 360 градусов? 3. Если у меня есть анимированный объект и пустить от него рэйкаст, как можно этот рэйкаст сделать "независимым"? Т.е. чтоб он не вращался вместе с объектом.
|
|
| |
error111 | Дата: Вторник, 02 Сентября 2014, 05:15 | Сообщение # 6473 |
заслуженный участник
Сейчас нет на сайте
| Ребят, где-то натыкался на ссылку на сайт на который можно быстро выложить web-версии своих проектов в разработке чтобы поделиться с общественностью и получить фидбек. Никто не поможет вспомнить? Сайт - не Woogli.
[Shmup/RPG] Fantasy Shmup!
|
|
| |
allods | Дата: Вторник, 02 Сентября 2014, 07:08 | Сообщение # 6474 |
почти ветеран
Сейчас нет на сайте
| DantorS,
1- Mathf.DeltaAngle
2- Transform.eulerAngles
3- Пускать этот рейкаст из точки которая не в чилдрен , но с кодом меняет позицию
|
|
| |
IlyaGolubtsov | Дата: Вторник, 02 Сентября 2014, 11:18 | Сообщение # 6475 |
был не раз
Сейчас нет на сайте
| Подскажите пожалуйста какая будет ссылка на volume из AudioManager-а для скрипта?
|
|
| |
NEBR | Дата: Вторник, 02 Сентября 2014, 11:22 | Сообщение # 6476 |
почти ветеран
Сейчас нет на сайте
| IlyaGolubtsov,
AudioSource имеет свойство volume. Обращаться к нему можно так
Код public AudioSource as;
void ChangeVolume() { as.volume = 0.5f; }
King Size #Gamiron12
|
|
| |
IlyaGolubtsov | Дата: Вторник, 02 Сентября 2014, 11:26 | Сообщение # 6477 |
был не раз
Сейчас нет на сайте
| а как это на яве будет?так же?У меня уже просто весь проект на нём,переписывать проблематично
|
|
| |
NEBR | Дата: Вторник, 02 Сентября 2014, 11:56 | Сообщение # 6478 |
почти ветеран
Сейчас нет на сайте
| IlyaGolubtsov, вроде так будет
Код AudioSource as;
function ChangeVolume() { as.volume = 0.5f; }
King Size #Gamiron12
|
|
| |
DantorS | Дата: Вторник, 02 Сентября 2014, 12:54 | Сообщение # 6479 |
заслуженный участник
Сейчас нет на сайте
| allods, спсаибо, с меня +. По поводу 3 вопроса. Цитата DantorS ( ) 3. Если у меня есть анимированный объект и пустить от него рэйкаст, как можно этот рэйкаст сделать "независимым"? Т.е. чтоб он не вращался вместе с объектом. Забыл добавить, что этот рэйкаст должен перемещаться с объектом, но не должен поворачиваться. Т.е просто тотвязать от объекта не получится. Вопрос всё тот же.
|
|
| |
allods | Дата: Вторник, 02 Сентября 2014, 14:53 | Сообщение # 6480 |
почти ветеран
Сейчас нет на сайте
| DantorS, Получится , можно перемещать его за объектом
к примеру objForRay.transform.position = transform.position
|
|
| |