forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

Nuprahtor 24.03.2012 13:47

Ответ: Фак по Юнити.
 
Оу. Понятно.

pax 24.03.2012 13:51

Ответ: Фак по Юнити.
 
С другой стороны можно использовать какую-то внешнюю программу, которая может считать время работы Unity.

Nuprahtor 24.03.2012 13:57

Ответ: Фак по Юнити.
 
Я просматривал такие программы, они считывают время Unity, но в целом, а я хотел бы такую фичу для каждого проекта (как в FL Studio, например, или в MapZone2).
Все же, проживу и без этой фичи.

WISHMASTER35 25.03.2012 16:57

Ответ: Фак по Юнити.
 
Как же плохо, что в инспекторе не отображаются свойства. Можно как-то обработать изменение поля в инспекторе?
Есть у меня скрипт Plane. Для удобства я в скрипте добавляю, настраиваю и скрываю MeshFilter и MeshRenderer. Но нужно как-то из скрипта Plane изменять материал. Да и не плохо было бы поле сделать, которое изменяло бы цвет, причем не материала, а вершин, для большей скорости.

pax 25.03.2012 17:44

Ответ: Фак по Юнити.
 
http://unity3d.com/support/documenta...ce/Editor.html

WISHMASTER35 25.03.2012 18:45

Ответ: Фак по Юнити.
 
к Editor'у всегда можно обратиться.
В чем отличие sharedMaterial от material? Я так понимаю sharedMaterial надо использовать для чтения, а material для записи, но почему так.
И я так понимаю в шейдере можно отключить цвет вершин? А то в Unlit шейдерах цвет не работает(

pax 25.03.2012 19:07

Ответ: Фак по Юнити.
 
sharedMaterial общий материал на все экземпляры, при изменении - меняется ан всех моделях, material - индивидуальный(становится индивидуальным при изменении)
Можно включить, в большинстве случаев он не используется.

WISHMASTER35 25.03.2012 19:49

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от pax (Сообщение 223669)
Можно включить, в большинстве случаев он не используется.

Только, если через материал изменять цвет, то батчинг перестает работать(
Сейчас заметил какую-то странность. Есть поле [SerializeField] private Color color; Если в редакторе я его изменяю в своем Editor'е, то при запуске игры цвет меняется на прежний, а если через дефолтный инспектор меняю, то все норм. Как это понимать? Да и раньше не сталкивался с таким. Скрипт помечен как ExecuteInEditMode.

pax 25.03.2012 20:33

Ответ: Фак по Юнити.
 
http://unity3d.com/support/documenta....SetDirty.html

SaM_ 28.03.2012 19:12

Ответ: Фак по Юнити.
 
Делаю пик-ап предметов.
Система для подъема такая: если персонаж находится на каком-то расстоянии от предмета с тегом 'tk', то при нажатии клавиши персонаж его "подымает", при нажатии той же клавиши еще раз - "бросает".

Проблема в том, что если положить префаб предмета на сцену при её редактировании и запустить проект, то поднять этот предмет персонаж сможет. При бросании спавнится предмет из того-же прифаба, с тем же тегом, но его поднять уже не получается. Почему?

moka 28.03.2012 19:44

Ответ: Фак по Юнити.
 
Каким образом ты находишь список предметов, исходя из которых вычисляешь расстояние и далее поднимаешь?
Видимо ошибко в твоём коде, где-то логически ты возможно указал конкретный предмет, что использует его идентификатор, и при повторном спауне, его идентификатор меняется.

pax 28.03.2012 19:59

Ответ: Фак по Юнити.
 
Пример:

PHP код:

private GameObject pickedGO null;
    public 
float distance;

    public 
void Update()
    {
        if(
Input.GetMouseButtonDown(0))
        {
            if(
pickedGO!= null)
            {
                Throw(
pickedGO);
                
pickedGO null;
            }
            else
            {

                var 
distToPickedObject float.MaxValue;
                
GameObject picked null;
                foreach (var 
obj in GameObject.FindGameObjectsWithTag("tk"))
                {
                    var 
dist Vector3.Distance(obj.transform.positiontransform.position);
                    if(
dist<distToPickedObject)
                    {
                        
distToPickedObject dist;
                        
picked obj;
                    }
                }

                if (
picked != null && distToPickedObject <= distance)
                {
                    
PickUp(picked);
                    
pickedGO picked;
                }
            }
        }
    } 

функции Throw и PickUp надо создать самостоятельно для обработки бросания и подбора объекта соответственно.

SaM_ 28.03.2012 20:02

Ответ: Фак по Юнити.
 
MoKa, вот так я определяю предмет:
Код:

obj_rv_wp = GameObject.FindGameObjectWithTag("rv01").transform;
Так расстояние ('private Transform thtr;'):
Код:

Vector3.Distance(obj_rv_wp.position, thtr.position) < 4.0f
Ключевую роль здесь играет тег. Я попробовал заспавнить несколько одинаковых объектов из одного прифаба - теги у всех одинаковые. Но скрипт реагирует на предмет с тем же тегом, но установленным на сцену при её редактировании.

moka 28.03.2012 20:36

Ответ: Фак по Юнити.
 
FindGameObjectWithTag, возвращает один объект, а не список объектов.
Тебе нужен список объектов, и затем цикл с проверкой на расстояния.
Посмотри на пример который привёл pax.

SaM_ 28.03.2012 22:02

Ответ: Фак по Юнити.
 
Как исправить данную ошибку? Скрипт не может найти предмет, координаты которого я пытаюсь узнать, хотя на сцене он присутствует.
Цитата:

error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `position' and no extension method `position' of type `UnityEngine.GameObject' could be found (are you missing a using directive or an assembly reference?)
Код:

GameObject[] weaps = GameObject.FindGameObjectsWithTag("rv");
foreach (GameObject weap in weaps) {
  if  (Vector3.Distance(weap.position, myTransform.position) < 4.0F) {
    if (Input.GetKeyUp("g")) {
      weapon2_e = true; weapon1_e = false; weapon2_e = false;
      weapon2_rv_pick = true; }
    }
}



Часовой пояс GMT +4, время: 00:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot