Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 18.05.2015, 07:28   #2146
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Я боюсь у тебя это не получится, property может указывать на свойства нескольких объектов одновременно, т.к. в редакторе можно выделить сразу много объектов. Самый простой путь - преобразовать target к типу своего скрипта и все рисовать с помощью EditorGUI/EditorGUILayout для одного первого объекта. Но появится проблема с Undo/Redo.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (22.05.2015)
Старый 18.05.2015, 16:56   #2147
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопросы от новичка

Сообщение от pax Посмотреть сообщение
Я боюсь у тебя это не получится, property может указывать на свойства нескольких объектов одновременно, т.к. в редакторе можно выделить сразу много объектов. Самый простой путь - преобразовать target к типу своего скрипта и все рисовать с помощью EditorGUI/EditorGUILayout для одного первого объекта. Но появится проблема с Undo/Redo.
Но... target ведь у Editor, а не у PropertyDrawer-a? (
Да и Undo/Redo не нужен, а если понадобится, то его же можно вручную сделать
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 18.05.2015, 17:06   #2148
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Вручную сложно, а у Editor target это первый из targets

UPD: сорри я немного не понял сначала о чем речь. в PropertyDrawer никак не получить что рисуешь. Вроде кто-то пробовал через рефлексию. Но это геморрой еще тот.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (20.05.2015)
Старый 20.05.2015, 19:47   #2149
ILonion
ПроЭктировщик
 
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений
(для 25 пользователей)
Ответ: Вопросы от новичка

Подскажите ответ на такой вопрос:
Мне нужно чтобы можно было определять объект под мышкой, но при этом, чтобы никаких столкновений между объектами не происходило.
В блитце была возможность сделать так без вызова UpdateWorld.
А как такое организовать в юнити? Как выключить расчет столкновения у всего?

UPD: или если у меня нет ни одного fixedUpdate(), то никакие столкновения рассчитываться нигде никогда не будут ?
(Offline)
 
Ответить с цитированием
Старый 20.05.2015, 21:26   #2150
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Вешай на объекты Collider'ы с Rigidbody в режиме IsKinematic
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ILonion (20.05.2015)
Старый 21.05.2015, 11:42   #2151
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Вопросы от новичка

Сообщение от ILonion Посмотреть сообщение
UPD: или если у меня нет ни одного fixedUpdate(), то никакие столкновения рассчитываться нигде никогда не будут ?
Наличие этой функции в твоём скрипте никак не повлияет на работу физики, она лишь позволяет тебе вклиниться в логику в момент обработки физики.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ILonion (21.05.2015)
Старый 21.05.2015, 18:10   #2152
ILonion
ПроЭктировщик
 
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений
(для 25 пользователей)
Ответ: Вопросы от новичка

Понятно..
Спасибо, pax, Жека!
(Offline)
 
Ответить с цитированием
Старый 21.05.2015, 21:36   #2153
ILonion
ПроЭктировщик
 
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений
(для 25 пользователей)
Ответ: Вопросы от новичка

Посоветуйте, пожалуйста, как поступить. Штука такая:
Образно: есть массив 3д объектов. Большое кол-во. Те, что находятся на расстоянии от камеры n, должны определяться мышкой, прочие - нет. Камера перемещается, соответственно и объекты подверженные лучу камеры меняются.
Каким образом эффективно включать\выключать у объектов коллайдеры? Я так понял, что только через getcomponent>collider.
Но вопрос в том, что "id' объектов постоянно меняются (перманентно instantiate и destroy делаются) и создать массив ссылок на коллайдеры перед запуском скрипта не получается.
В руководстве же, написано, что getcomponent (в свете производительности) хорошо бы использовать по-реже (что и смущает).
getcomponent на лету единственный способ в данном случае?
(Offline)
 
Ответить с цитированием
Старый 21.05.2015, 23:59   #2154
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопросы от новичка

Сообщение от ILonion Посмотреть сообщение
Посоветуйте, пожалуйста, как поступить. Штука такая:
Образно: есть массив 3д объектов. Большое кол-во. Те, что находятся на расстоянии от камеры n, должны определяться мышкой, прочие - нет. Камера перемещается, соответственно и объекты подверженные лучу камеры меняются.
Каким образом эффективно включать\выключать у объектов коллайдеры? Я так понял, что только через getcomponent>collider.
Но вопрос в том, что "id' объектов постоянно меняются (перманентно instantiate и destroy делаются) и создать массив ссылок на коллайдеры перед запуском скрипта не получается.
В руководстве же, написано, что getcomponent (в свете производительности) хорошо бы использовать по-реже (что и смущает).
getcomponent на лету единственный способ в данном случае?
Вешай на объекты компонент, который имеет поле myCollider, которое можно вручную назначать, или в Start-е Getcomponent выполнять
И в массиве держать ссылки имеено на этот компонент
Как-то так?
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ILonion (22.05.2015)
Старый 22.05.2015, 07:29   #2155
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

У Physics.Raycast есть много параметров, задай дистанцию действия луча и не парься о включении/выключении колайдеров.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
ILonion (22.05.2015), LLI.T.A.L.K.E.R. (23.05.2015), Жека (22.05.2015)
Старый 22.05.2015, 19:10   #2156
ILonion
ПроЭктировщик
 
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений
(для 25 пользователей)
Ответ: Вопросы от новичка

Спасибо, pax, так и сделаю!
ANIK123, спасибо, но предустановленный массив делать в моем случае нельзя - нет постоянных id объектов.
(Offline)
 
Ответить с цитированием
Старый 23.05.2015, 09:18   #2157
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: Вопросы от новичка

Пытаюсь смастерить свой Dictionary, который умеет сериализироваться
[Serializable]
public class 
DictionarySerializable<KV> : IEnumerable<KVPSerializable<KV>> {
    [
SerializeField] protected List<KVPSerializable<KV>> list = new List<KVPSerializable<KV>>();
    public 
int Count {get{return list.Count;}}
    protected 
void Add(K KeyV Value){
        list.
Add(new KVPSerializable<KV>{Key KeyValue Value});
    }
    public 
void Remove(K Key){
        list.
Remove(Find(Key));
    }
    public 
V this[K Key]{
        
get {return Find(Key).Value;}
        
set {
            
bool finded false;
            foreach (var 
v in list){
                if (
v.Key.Equals(Key)){v.Value valuefinded true; break;}
            }
            if (!
finded){Add(Keyvalue);}
        }
    }
    public 
KVPSerializable<KVFind(K Key){
        foreach (var 
v in list){
            if (
v.Key.Equals(Key)){return v;}
        }
        throw new 
System.InvalidOperationException();
    }
    public 
IEnumerator<KVPSerializable<KV>> GetEnumerator(){
        foreach (var 
v in list){
            yield return 
v;
        }
    }
    
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator(){
        return 
this.GetEnumerator();
    }
}

[
Serializable]
public class 
KVPSerializable<KV> {
    public 
K Key; public V Value;

EditorGUI.BeginChangeCheck();
foreach (var 
v in myTarget.dict){
        ....
    
v.Value.strength EditorGUILayout.IntField(v.Value.strength);
        ....
}
if (
EditorGUI.EndChangeCheck()){
    
EditorUtility.SetDirty(target);


Но он не сериализируется (при запуске "игры" и при выходе с нее - данные сбрасываются)
Не могу понять где налажал
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 23.05.2015, 10:32   #2158
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Твой пример, это не словарь, а простой перебор. Нет никаких преимуществ поиска. Ведь словарь это хэш таблица.

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

Вот готовый пример сериализации стандартного словаря:
http://docs.unity3d.com/ScriptRefere...rialize.h tml

Я обычно поступаю так:
using UnityEngine;
using System.Collections.Generic;

public class 
ExampleMonoBehaviour
{
     [
System.Serializable]
     public class 
DictionaryItem
     
{
            public 
string key;
            public 
int value;
     }

     public List<
DictionaryItemitems;

     public 
Dictionary<stringintdic;

     
void Awake()
     {
            
dic = new Dictionary<stringint>();
            if(
items!= null)
            {
                 foreach(var 
item in items)
                   
dic[item.key] = item.value;
            }
     }
    

И не надо писать никакие свои редакторы для типов.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (23.05.2015)
Старый 29.05.2015, 03:19   #2159
ILonion
ПроЭктировщик
 
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений
(для 25 пользователей)
Ответ: Вопросы от новичка

Доброго времени!
Такой вопрос:
луч должен возвращать компонент объекта в сцене - скрипт, и из него метод, но при попытке запуска юнити говорит, что ссылается не на экземпляр (Object reference not set to an instance of an object):

hit.collider.GetComponent<xcalss>().xmethod(); 
энное кол-во объектов в сцене со скриптом с классом xclass.
как быть в данном случае?
нужно запускать методы xmethod().
(Offline)
 
Ответить с цитированием
Старый 29.05.2015, 06:56   #2160
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Вот так
var component hit.collider.GetComponent<xcalss>();
if(
componentcomponent.xmethod(); 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ILonion (29.05.2015)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com