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)

pax 24.11.2011 14:12

Ответ: Фак по Юнити.
 
Юнити - игровой двиг, зачем в игре открывать файл? В редакторе все что нужно - можно сделать с помощью EditorGUI.

Amatsu 24.11.2011 14:13

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

Сообщение от pax (Сообщение 210990)
Юнити - игровой двиг, зачем в игре открывать файл? В редакторе все что нужно - можно сделать с помощью EditorGUI.

Я пишу надстройку для редактора, которая бы открывала браузер графических (в дальнейшем - не только) файлов по всему компьютеру и добавляла бы указанные через вызванное файловое окно текстуры в паки

А можно ли как-то узнать размер созданного мной EditorWindow? Я просто использую в нем SelectionGrid, в параметрах можно указать число столбцов - если я буду растягивать окно - число столбцов не увеличится, просто они станут шире. А вот хотелось бы реализовать, чтобы число столбцов было динамическим от ширины окна

pax 24.11.2011 14:16

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

Amatsu 24.11.2011 19:06

Ответ: Фак по Юнити.
 
Скачал последний MySQL Connector .Net версии 6.3.7, поставил, взял из нужной папки файл MySql.Data.dll и перенес его в папку Editor. Увы, компилятор юнити его не увидел, не смог распознать using MySql.Data.MySqlClient;

Тогда кинул библиотеку прям в папку Assets проекта. Вижуалстудио ругаться перестал, но теперь в юнити пишет вот такую ошибку:

Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Security.SecurityRulesAttribute' from assembly 'MySql.Data'.

at (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Module,string,bool,bool)

at System.Reflection.Assembly.GetType (System.String name, Boolean throwOnError, Boolean ignoreCase) [0x00000] in <filename unknown>:0




UPDATE

Кажется решил проблему. Скачал по совету Неодропа более старую версию 6.1. Перестал ругаться

pax 24.11.2011 21:08

Ответ: Фак по Юнити.
 
Попробуй с актуальной версией библиотеки положить в проект mscorlib.dll из папки моно в папке Unity. Куда-нибудь в папку Assets/Plugins/
И еще наверное надо System.Data.dll и System.Xml.dll

RegIon 25.11.2011 10:46

Ответ: Фак по Юнити.
 
А что,Unity не может рисовать тени не объекте,если он с вывернутыми нормалями(бегаем по кубику с нормалями внутрь)

pax 25.11.2011 10:59

Ответ: Фак по Юнити.
 
Отключи этому кубу Cast Shadows (повлияет на направленный источник света). Точечные источники работают нормально.

RegIon 25.11.2011 16:55

Ответ: Фак по Юнити.
 
Вот у меня есть дверь,есть скрипт для неё,есть объект который эту дверь открывает-закрывает.По сути скрипт через public привязывается к объекту у которого должна быть переменная,напимер bool STATUS.Как сделать так,чтоб скрипт выполнялся в зависимости от переменной(как найти переменную)

pax 25.11.2011 16:56

Ответ: Фак по Юнити.
 
через точку: объект.свойство

RegIon 25.11.2011 17:04

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

Assets/Scripts/Door.cs(15,30): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `Status' and no extension method `Status' of type `UnityEngine.GameObject' could be found (are you missing a using directive or an assembly reference?)
Никак не хотит через точку....
Код:

using UnityEngine;
using System.Collections;

public class Door : MonoBehaviour {
    public GameObject Activator;
    // Use this for initialization
    void Start () {

    }
   
    private int anim=0;
    // Update is called once per frame
    void Update () {
       
      if(Activator.status){
            anim=1;
            if(!animation.isPlaying && anim==1) animation.Play("Open");
        else{   
            if(!animation.isPlaying && anim==1) animation.Play("Close");
            anim=0;
        }
       
    }
}
}


Aikon 25.11.2011 17:18

Ответ: Фак по Юнити.
 
Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
Код:

Activator = GameObject.Find("Player");
Но по-моему ты что-то не то делаешь.
Я бы сделал так:
1. Создал скрипт Door, в котором определил бы
public OnClick() {...}
private bool IsOpen = false;
и повесил бы его на двери.
2. Когда надо открыть дверь, то делаем так
GameObject.Find("Door").GetComponent<Door>().OnCli ck();

RegIon 25.11.2011 17:26

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

Костян, ясен пень с ошибкой падает.
Сначала надо определить, что это за объект такой Activator, напр.
Код:

public GameObject Activator;
а это что???
Неа,так потом уйма объектов с разными именами будет(например уже 3 кнопки и 2 двери....) и сотни строк кода...я имено как в халмере сделать хочу.

Aikon 25.11.2011 17:49

Ответ: Фак по Юнити.
 
Костян,
Код:

public GameObject Activator;
Указывает на то, что у тебя есть Activator типа GameObject, у которого ясен пень свойства статус нет (насколько я понимаю, при таком объявлении создается GameObject вида Dummy из редактора).
Вообще не понял, что ты хочешь. Если тебе надо открывание двери по клику на нее, то вместо OnClick() пиши обработчик OnMouseDown в классе Door. Если надо, чтобы дверь открывалась по клику по кнопке, то у кнопки добавляй свойство
public Door[] doors;
И в редакторе указывай нужную дверь/двери.
В коде кнопки дописывай обработчик OnMouseDown, в котором будут открываться или закрываться все двери, перечисленные в Door[], путем вызова соответствующей public процедуры у класса Door.

RegIon 25.11.2011 17:52

Ответ: Фак по Юнити.
 
У Activatora есть скрипт где написанно :public bool status
Он его меняет в зависимости от чего-то ....вот мне её найти нужно(имена скриптов разные...скрипт на объекте один)

Lestar 25.11.2011 17:52

Ответ: Фак по Юнити.
 
Те не создал экземпляр класса Activator,поэтому и не находит необходимого поля.В твоем случае делать
PHP код:

Activator.GetComponent<Script>().status 


Aikon 25.11.2011 17:58

Ответ: Фак по Юнити.
 
Костян, все понял. Ты наоборот сделал - у каждой двери своя кнопка, которую в редакторе задаешь. Ну тогда Lestar правильно говорит.

RegIon 25.11.2011 18:46

Ответ: Фак по Юнити.
 
Никто из вас особо не помог,так как работает только:
Код:

Activator.GetComponentInChildren<Varics>.status

pax 25.11.2011 20:02

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

Сообщение от Костян (Сообщение 211232)
Никто из вас особо не помог,так как работает только:
Код:

Activator.GetComponentInChildren<Varics>.status

Надо просто точнее задачу ставить. Никто не знал, что скрипт находится на дочернем объекте.

В твоем случае надо было:

1. Создать переменную не типа GameObject, а типа Varics.
2. Назначить этой переменной в редкторе тот скрипт, взаимодействие с которым ты хотел сделать (перетащить назначенный скрипт объекту, на поле, или перетащить на поле сам объект с этим скриптом).
3. Заработает твой пример.

RegIon 25.11.2011 20:10

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

using UnityEngine;
using System.Collections;

public class Door : MonoBehaviour {
    public GameObject Activator;
    // Use this for initialization
    void Start () {
       
    }
   
    private int anim;
    // Update is called once per frame
    void Update () {
       
        if(Activator.GetComponent<Varics>().Status){
            if(!animation.isPlaying && anim==1){
                animation.Play("open");
                anim=0;
               
            }
           
        }else{   
            if(!animation.isPlaying && anim==0){
                this.animation.Play("close");
                anim=1;}
            }
        }
       
   
}

Как сделать так,чтоб анимация доиграла до конца и встала(при status==1,при этом status нельзя менять),а при status==0 опять проиграла,только другая и встала.
p.s свойства анимации once не предлагать-не работает...

pax 25.11.2011 20:14

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

PHP код:

void Start () {
    
animation.wrapMode WrapMode.Once;  



RegIon 26.11.2011 19:00

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

using UnityEngine;
using System.Collections;

public class Door : MonoBehaviour {
    public GameObject Activator;
    // Use this for initialization
    void Start () {
            animation.wrapMode = WrapMode.Once; 
    }
   
    private int anim;
    // Update is called once per frame
    void Update () {
       
       
        //if(Activator.GetComponent<Varics>().Status){
        if(Input.GetButton("Fire1")){
            if(!animation.isPlaying && anim==1){
                animation.Play("open");
                anim=0;
                GameObject.Find("door/Plane.001").collider.isTrigger=true;
                GameObject.Find("door/Plane.002").collider.isTrigger=true;
            }
           
        }else{   
            if(!animation.isPlaying && anim==0){
                this.animation.Play("close");
                anim=1;
                //this.collider.isTrigger=true;
                GameObject.Find("door/Plane.001").collider.isTrigger=true;
                GameObject.Find("door/Plane.002").collider.isTrigger=true;
            }
            }
        Debug.Log(Activator.GetComponent<Varics>().Status.ToString());
        }
   
       
   
}

вот такой код(весит на двери) есть,но если я объекту главному меняю имя,он не работает,как изменить свойства чаилда независимо от имени объекта?
Как пикать объект лучом и возвращать его имя?

RegIon 26.11.2011 20:57

Ответ: Фак по Юнити.
 
Вложений: 1
;) во,пак с дверьми и и одной кнопкой,правда кнопка не работает-нужен рейкаст(в скрипте самой кнопки)...
Вложение 15590

Amatsu 29.11.2011 13:02

Ответ: Фак по Юнити.
 
Как я понял, бандл - это такой архив ресурсов для игры, которые может подгружаться с сервера? Кто может подсказать, как создавать такой бандл кодом на C#? И еще вопрос - если у меня уже есть бандл - можно ли в него добавить допустим текстуру, не пересоздавая бандл?

pax 29.11.2011 13:12

http://unity3d.com/support/documenta...setBundle.html

Цитата:

Сообщение от Amatsu (Сообщение 211647)
И еще вопрос - если у меня уже есть бандл - можно ли в него добавить допустим текстуру, не пересоздавая бандл?

Нет, таких методов нету. Можно только пересоздать.

Amatsu 29.11.2011 18:20

Ответ: Фак по Юнити.
 
А вот интересный вопрос. Я так понял, Юнити конфликтует с System.Drawing.Image, потому хотелось бы узнать - можно ли средствами юнити узнать разрешение изображения, лежащего в папке Resources

RegIon 29.11.2011 19:30

Ответ: Фак по Юнити.
 
А Unity не может иметь колайдеры у моделеё с анимацией...? а то дверь криво работает

Amatsu 29.11.2011 19:32

Ответ: Фак по Юнити.
 
И еще один вопрос. В GUILayout, то есть интерфейсе редактора, можно ли создать компонент для рендера 3д модели? Например в самом редакторе есть такое окно (если выбрать в ассетах проекта файл 3д-модели - ее превью появится справа в небольшом окошке)

Lestar 29.11.2011 20:00

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

Сообщение от Костян
А Unity не может иметь колайдеры у моделеё с анимацией...? а то дверь криво работает

На модель повесить примитив коллайдер/к кости привязать привязать примитив и сделать его триггером.

Цитата:

Сообщение от Amatsu
можно ли создать компонент для рендера 3д модели

Стандартными средствами нет.Можно покопаться в Editor.dll и посмотреть реализацию.

pax 29.11.2011 20:31

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

Сообщение от Костян (Сообщение 211693)
А Unity не может иметь колайдеры у моделеё с анимацией...? а то дверь криво работает

Коллайдеры повесить на створки. И еще для двигающихся объектов лучше повесить RigidBody с галочкой IsKinematic


Цитата:

Сообщение от Amatsu (Сообщение 211686)
А вот интересный вопрос. Я так понял, Юнити конфликтует с System.Drawing.Image, потому хотелось бы узнать - можно ли средствами юнити узнать разрешение изображения, лежащего в папке Resources

А так не подходит Resources.Load(Texture2D)?

Lestar 29.11.2011 23:11

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

Сообщение от pax (Сообщение 211702)
Коллайдеры повесить на створки. И еще для двигающихся объектов лучше повесить RigidBody с галочкой IsKinematic

Я собственно просто на гуще гадал.Так как у проблемы"а то дверь криво работает" десятки причин,как и их решений.

pax 29.11.2011 23:43

Ответ: Фак по Юнити.
 
Бывают такие вопросы, над которыми тока гадать)

Amatsu 30.11.2011 19:09

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

Все, уже нашел ответ http://answers.unity3d.com/questions...x-importe.html

Amatsu 01.12.2011 17:52

Ответ: Фак по Юнити.
 
Разобрался, как задать камере cullingMask. Но никак не пойму, как задать объекту кодом новый Layer, чтобы cullingMask обрабатывал лишь этот слой.

Camera.cullingMask = 1 << 31;
Mesh.Layer = 31;

В результате камера не отображает меш.

pax 01.12.2011 17:55

Ответ: Фак по Юнити.
 
А ты уверен что у меша слой есть? Слой надо задавать объекту, который содержит компоненты, рендерящие меш.

Amatsu 02.12.2011 14:40

Ответ: Фак по Юнити.
 
Вопрос. У меня есть рендер-текстура, которую я рендерю в созданное мной окно редактора в компонент Box:
Код:

public void OnGUI()
{
GUILayout.Box(MVTexture,GUILayout.MaxHeight(512),GUILayout.MaxWidth(512));
}

В этом случае рендерится вращающаяся модель. Сам рендер камеры проходит в методе Update. Но вот так как Box у меня обновляется в методе OnGUI - он обновляет текстуру только когда я например перетаскаю или изменяю размер окна.
Я пробовал перенести функцию GUILayout.Box в метод Update, но юнити ругается

Все, решил проблему через репейнт.
з.ы. как полезно все же проблему записывать на булку - сразу в голове решение приходит

Amatsu 02.12.2011 17:07

Ответ: Фак по Юнити.
 
А есть ли в юнити какая-нить проверка на нажатие кнопки Run (это которая кнопка Play в редакторе юнити)? Типа "если нажата кнопка" или "если запущен процесс компиляции или наоборот выхода из запущенной игр" - то что-то можно выполнить.

Или же, если подобное не реализуемо, то есть ли возможность лочить окна, в том числе самого юнити, через юнити?

pax 02.12.2011 21:58

Ответ: Фак по Юнити.
 
Что ты подразумеваешь под "лочить"?
http://unity3d.com/support/documenta...Compiling.html
http://unity3d.com/support/documenta...-isPaused.html
http://unity3d.com/support/documenta...isPlaying.html
http://unity3d.com/support/documenta...ePlaymode.html

Amatsu 03.12.2011 10:40

Ответ: Фак по Юнити.
 
Под локом я понимаю блокировку окна (чтобы не нажимались кнопки, окно нельзя было перетащить или закрыть).
Спасибо за ссылки, попробую так

pax 03.12.2011 11:33

Ответ: Фак по Юнити.
 
Вероятно нельзя залочить, кроме как стандартными диалогами. Либо только через WinAPI. Но тут я не помошник.

Aikon 09.12.2011 02:41

Ответ: Фак по Юнити.
 
Попросили тут накидать заготовку для платформера. В связи с чем пара вопросов.

1. Как ограничить физику, как например в AngryBirds: физические объекты ведут себя, как будто нет третьего измерения.
2. Как сделать веревку? (2D)

pax 09.12.2011 07:22

Ответ: Фак по Юнити.
 
Вложений: 1
1. Ответ в аттаче.
2. Например тут посмотри

Aikon 09.12.2011 13:09

Ответ: Фак по Юнити.
 
pax, спасибо :)

Amatsu 12.12.2011 18:51

Ответ: Фак по Юнити.
 
Подскажите плиз. Как я понял, средствами GUILayout можно реализовать список элементов с возможностью выбора только через компонент SelectionGrid. А вот есть задача - каждому элементу добавить галку, которую можно включить или выключить. Естессно именно таким образом данный механизм реализовать нельзя. Но можно ли в SelectionGrid реализовать мультиселект?

pax 12.12.2011 21:50

Ответ: Фак по Юнити.
 
Эх, но все же просто:

PHP код:

using System.Collections.Generic;
using UnityEngine;

public class 
GUISelect MonoBehaviour
{

    public class 
ListItem
    
{
        public 
string name;
        public 
bool slected;
    }

    private List<
ListItem_items = new List<ListItem>();

    public 
void Start()
    {
        for (
int i 0100i++)
        {
            
_items.Add(new ListItem name "item " islected Random.value 0.5f });
        }
    }

    private 
Vector2 _scroll;

    public 
void OnGUI()
    {
        
GUILayout.BeginArea(new Rect(10,10,200,500),GUI.skin.box);
        
_scroll GUILayout.BeginScrollView(_scroll);

        foreach (var 
item in _items)
        {
            
item.slected GUILayout.Toggle(item.slecteditem.name);
        }

        
GUILayout.EndScrollView();
        
GUILayout.EndArea();
    }



RegIon 13.12.2011 17:56

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

Lestar 13.12.2011 18:16

Ответ: Фак по Юнити.
 
В Антаресе есть функционал инстанс выбранного ассета по клику.Добавить логику,чтобы брался трансформ от обьекта,учитывалась сторона относительно центра обьекта и инстансили с дельтой равной половине bounds.size .

RegIon 13.12.2011 18:42

Ответ: Фак по Юнити.
 
Ты мне пальцем тыкни,я на нём аж 2 недели

Lestar 13.12.2011 19:28

Ответ: Фак по Юнити.
 
Вложений: 1
Выбирает обьект в проекте,жмем на Instans Object ,кликаем по мешу ,обьект инстансит в точке клика.

Taugeshtu 13.12.2011 19:57

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

Выбирает обьект в проекте,жмем на Instans Object ,кликаем по мешу ,обьект инстансит в точке клика.
Хардкор, чо)
Edit -> Snap Settings..

Lestar 13.12.2011 20:38

Ответ: Фак по Юнити.
 
Актуально при расстановке десятка обьектов.Сколько времени уйдет на сотню,вторую? Это редко бывает.Но что мешает один раз написать 10 строчек(максимум) и избавится в будущем от гемороя?

Taugeshtu 14.12.2011 00:31

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

Актуально при расстановке десятка обьектов.Сколько времени уйдет на сотню,вторую? Это редко бывает.Но что мешает один раз написать 10 строчек(максимум) и избавится в будущем от гемороя?
Не будем спорить - оба наших ответа отвечают на неуточнённый вопрос, что примечательно - разными подходами. Какой применять, я думаю, вопрошающий разберётся :-)

RegIon 14.12.2011 11:03

Ответ: Фак по Юнити.
 
Вложений: 1
А у меня нету;)Лестар,что делать тогда?Вложение 15719

Taugeshtu 14.12.2011 14:20

Ответ: Фак по Юнити.
 
Вложений: 1
Цитата:

А у меня нету
Точно? :4to:
Хм, странно...

RegIon 14.12.2011 14:46

Ответ: Фак по Юнити.
 
Спасибо,я знаю где;)

Lestar 14.12.2011 15:03

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

Сообщение от Костян (Сообщение 213913)
А у меня нету;)Лестар,что делать тогда?Вложение 15719

Скачать последнюю версию.Должна быть.Она шла в стандартной поставке пакаджа.

RegIon 14.12.2011 15:53

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

Скачать последнюю версию.Должна быть.Она шла в стандартной поставке пакаджа.
version 3.4.0f5

pax 14.12.2011 16:21

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

Сообщение от Костян (Сообщение 213931)
version 3.4.0f5

Костян, читай внимательно:

Цитата:

Сообщение от Lestar (Сообщение 213821)
В Антаресе есть функционал инстанс выбранного ассета по клику.

Скачать можно здесь

Amatsu 14.12.2011 18:32

Ответ: Фак по Юнити.
 
Подскажите плиз, есть ли возможность вызвать клон панели Inspector для конкретной текстуры через GUILayout?

UPDATE не так выразился. Мне нужно вызвать инспектор внутри окна EditorWindow

pax 14.12.2011 21:41

Ответ: Фак по Юнити.
 
Думаю нет. По крайней мере в открытых методах такого нет. Если только в закрытых искать.

Lestar 15.12.2011 01:01

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

Сообщение от Amatsu (Сообщение 213948)
Мне нужно вызвать инспектор внутри окна EditorWindow

Ctrl+3

Taugeshtu 15.12.2011 13:31

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

клон панели Inspector для конкретной текстуры
Потом выбираешь в проекте/иерархии нужную текстуру и там, где хочешь её видеть постоянно нажимаешь на пиктограмму замка. Т.е. "лочишь" объект. Потом можешь выбирать что угодно - в первом (нелоченном) инспекторе будет видно то, что выбрал, во втором - твоя текстура.

ARA 26.12.2011 15:12

Ответ: Фак по Юнити.
 
Вопрос к гуру юнити:
Допустим имеется у меня префаб "man_prefab". В префабе меш персонажа "man.fbx".

В максе добавляю к персонажу оружие/одежду, экспортирую. Меш "man.fbx" обновляется, а в префабе не обновляется. После каждого изменения в man.fbx нужно заново префаб ручками обновлять?

Taugeshtu 26.12.2011 16:24

Ответ: Фак по Юнити.
 
На звание гуру не претендую, но предположу:
Обновление меша не приводит к появлению оружия/одежды т.к. твой префаб берёт не чистый .fbx, а меши, которые в нём лежат (посмотри структуру своего .fbx в Project view). Когда обновляется определённый меш в твоём .fbx - он должен обновиться и в префабе, а когда туда добавляется новый меш - этого не произойдёт (т.к. префаб связан с мешем, а не с .fbx-контейнером)
Так что походу да, ручками.. Или скрипт сочинять

Andvrok 27.12.2011 04:55

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

У меня есть примитивно собранный стол.

Он собран из 3х видов "досок".

Доски прикреплены друг к другу джоинтами.

Собственно вопрос: какие манипуляции нужно произвести, чтобы при воздействии силы стол разваливался на части?

Хотя я думаю вопрос поставлен не слишком корректно. Я поковырялся с параметром Break Force в джоинтах, и обнаружил что при установке этого параметра меньше 10ти стол частично разваливается сам под действием гравитации, что в мои планы никак не входит. В то время как при параметре 10, для куба, толкаемого силой в сторону стола требуется не меньше 500 дабы развалить его, никак не 10. Что я прозевал?


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

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