forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

Fockerian 31.05.2012 15:29

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от cahekp (Сообщение 229122)
По поводу Pathfinding: да, только в платной.
Если тебе чем-то не угодила A*, можешь просто использовать следующие строчки:
PHP код:

if (Vector3.Distance(enemy.transform.positionplayer.transform.position) < minDistance) {
enemy.transform.LookAt(player.transform.position);
enemy.transform.Translate(005*Time.deltaTime);


Это очень, очень простой алгоритм поиска пути. :)

По поводу игры вчетвером: реально.

А вообще, если делаешь стратегию, то тут без A-Стара никуда, имхо. Это очень толковый алгоритм.

Спасибо за ответ.Такой простой алгоритм пути будет катить только для танка =)))


Я как то имел дело в А* патчфайдингом для Юнити какогото типа, который разрешал использовать его скрипты в игре только за деньги. Есть бесплатные варианты? уже готовые?

pax 31.05.2012 16:29

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Nuprahtor (Сообщение 229096)
поэтому я хочу знать - возможно ли менять настройки Input в уже запущенной игре?

Настроить именно Input (как это в редакторе делается) нельзя, можно самому написать подобную систему. Либо взять готовую типа http://roidz.weebly.com/ внизу ссылка на скачивание (я еще не использовал)

Fockerian 01.06.2012 10:54

Ответ: Вопросы от новичка
 
Подскажите пожалуйста мануал на русском языке по A* патчфайтингу для UNITY3D (для версии FREE )

RegIon 01.06.2012 17:50

Ответ: Вопросы от новичка
 
Подскажите как можно сделать карту путей(ну или как там, чтобы бот не выходил за какие-то границы как в HL )

WISHMASTER35 01.06.2012 19:11

Ответ: Вопросы от новичка
 
Fockerian, http://unifycommunity.com/wiki/index...le=AStarHelper

Fockerian 02.06.2012 00:51

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 229186)

Спасибо))

Amatsu 02.06.2012 16:46

Ответ: Вопросы от новичка
 
Ищу совета. Есть файл, лежащий в папке Assets/Resources/ с расширением bytes. В нем записан массив чисел в int-формате. Когда затем я пытаюсь загрузить его через TextAsset, он мне предлагает прочитать записи в файле лишь в формате byte. Вопрос - как сконвертить?

з.ы. проблема решена, разобрался с BitConverter. Очень надеюсь, что эта штука будет работать и на маках

pax 03.06.2012 19:21

Ответ: Вопросы от новичка
 
Она работает и на iOS и Android если что ;)
Еще можешь использовать BinaryReader без проблем.

pie 05.06.2012 15:34

Ответ: Вопросы от новичка
 
Как поменять шейдер материала на лету?

PHP код:

if(Input.GetKey(KeyCode.A))
            {
                
brakeLights[0].renderer.material[0].shader тут нужно обратиться к стандартному шейдеру self-illumin/diffuse;
            }else{
                
brakeLights[0].renderer.material[0].shader а тут к обычному diffuse;
            } 

Как обращаться к стандартным шейдерам?

cahekp 05.06.2012 16:18

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pie (Сообщение 229501)
Как обращаться к стандартным шейдерам?

Может быть, с помощью Shader.Find()? )

Вот пример из документации:
PHP код:

// Switch the shader from code

function Start () {
    
// Switch to the transparent diffuse shader
    
renderer.material.shader Shader.Find ("Transparent/Diffuse");



RegIon 05.06.2012 16:58

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pie (Сообщение 229501)
Как поменять шейдер материала на лету?

PHP код:

if(Input.GetKey(KeyCode.A))
            {
                
brakeLights[0].renderer.material[0].shader тут нужно обратиться к стандартному шейдеру self-illumin/diffuse;
            }else{
                
brakeLights[0].renderer.material[0].shader а тут к обычному diffuse;
            } 

Как обращаться к стандартным шейдерам?

Я думаю проще бедет сделать так:
PHP код:

Public Material lol_1;
Public 
Material lol_2;

void Update()
{
    if(
Input.GetKeyDown(KeyCode.A))
            
renderer.material=lol_1;
     else
           
renderer.material=lol_2;
   


Надо кусок одной текстуры затайлить на другой(квадратная карта), как это можно сделать не Texture.setPixel()? (надо циферки из текстуры нарисовать на другой всего раз)

pax 05.06.2012 22:42

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Костян (Сообщение 229511)
Надо кусок одной текстуры затайлить на другой(квадратная карта), как это можно сделать не Texture.setPixel()? (надо циферки из текстуры нарисовать на другой всего раз)

А вот это не подойдет (вторая перегрузка)?
Texture2D.GetPixels
Texture2D.SetPixels
Только обе текстуры должны поддерживать чтение и запись пикселей (можно включить в режиме Advanced).

RegIon 06.06.2012 11:27

Ответ: Вопросы от новичка
 
PHP код:

using UnityEngine;
using System.Collections;

public class 
Numbers MonoBehaviour {

    public 
Texture2D NumberTex;
    public 
int Num=0;
    public 
Vector2 Pos;
    public 
bool alignRight=true;
    
    public 
Texture2D RenderTo;
    
    private 
int Block_x=0;
    private 
int Block_y=0;
    private 
Color[,] Pixels=new Color[10,128*128];
    
void Start () {
        if(
NumberTex)
        {
        
Block_x=(int)NumberTex.width/10;
        
Block_y=NumberTex.height;
        
            for(
int i=0;i<10;i++){
                
                
Color[] tmp=NumberTex.GetPixels(i*Block_x,0,Block_x,Block_y);
                
                for(
int n=0;n<tmp.Length;n++)    
                    
Pixels[i,n]=tmp[n];
                
            }
        }
    }
    
    
void Update () {
        
        
char[] tmp_1=Num.ToString().ToCharArray();
        if(
RenderTo)
        {
            for(
int i=0;i<tmp_1.Length;i++)
            {
                
Debug.Log(int.Parse(tmp_1[i].ToString()));
                
                if(
alignRight)
-----------
ТУТ------------->RenderTo.SetPixels(Pos.x-(i*Block_x),Pos.y,Block_x,Block_y,---->Pixels[int.Parse(tmp_1[i].ToString())]);
            }
        }
    }


Я так понял среда .NET вообще не дружит с массивами?
Как мне получить к внутренний массив в двумерном массиве?
//Например как в С:
Код:

int lol[10,512];
int 2lol[512]=lol[0];

?

ffinder 06.06.2012 11:48

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Костян (Сообщение 229597)
Я так понял среда .NET вообще не дружит с массивами

ну да, тысячи проектов обходятся вообще без массивов, потому что "среда .NET c ними не дружит", всё верно:-D

pax 06.06.2012 13:25

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Костян (Сообщение 229597)
PHP код:

Pixels[int.Parse(tmp_1[i].ToString())]); 


Что это за страсть такая?

Цитата:

Сообщение от Костян (Сообщение 229597)
Как мне получить к внутренний массив в двумерном массиве?

Объяви массив по другому:

PHP код:

private Color[][] Pixels=new Color[10][]; 


WISHMASTER35 06.06.2012 21:57

Ответ: Вопросы от новичка
 
Я конечно понимаю, что работа из другого потока может создать ошибки. Но зачем запретили даже со своими полями работать, если скрипт наследован от юнитивских классов(
Вот как быть? В префабе, в ScriptableObject храню нужные мне данные. И с этими данными нужно работать в другом потоке. Такой облом аж плачу(

Еще обнаружил, что в префабе не будят хранится данные сериализованного объекта, если ссылка на родительский класс этого объекта.
Хотел сделать [SerializeField] private Figure figure = new Cube(); А в ней хранить разные типы объектов, но хръ!
Не говоря уже, что если не сделать new Cube(), то юнити сам создаст объект Figure не смотря на то, что этот класс абстрактный))

is.SarCasm 07.06.2012 12:33

Ответ: Вопросы от новичка
 
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

RegIon 07.06.2012 13:23

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от is.SarCasm (Сообщение 229709)
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

если много, то можно завести одни статичный массив и записать в него конфу, хотя можно все переменные статичить:
public static int lolo

cahekp 07.06.2012 13:31

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от is.SarCasm (Сообщение 229709)
Как передать информацию из одного уровня в другой?? Например я из Menu захожу на Level_1 и мне нужно передать настройки игры.

Есть несколько способов.

1) Можно в меню создать отдельный объект с настройками и добавить на него компонент с простыми строчками:
PHP код:

void Awake() {
     
DontDestroyOnLoad(gameObject);


После этого этот объект не будет удаляться при переходе от одного уровня в другой. В уровне Level_1, допустим, можно написать что-то вроде:
PHP код:

void Start() {
    
GameObject go GameObject.Find("OPTIONS");
    
MyOptions mo go.GetComponent<MyOptions>();
    
// и так далее...


2) Самый простой, на мой взгляд. Просто создай статичный класс. Его даже на сцену не нужно вытаскивать.
PHP код:

public class Options MonoBehaviour {
    public static 
int screenWidth;
    public static 
int screenHeight;
    public static 
float soundVolume;


И всё! Теперь из любого скрипта можешь обращаться к нему напрямую: Options.soundVolume = 1.0F;
И что-нибудь читать из него: int sw = Options.screenWidth;
При переходе из одного уровня в другой содержимое статичного класса не обнуляется.

RegIon 07.06.2012 16:06

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 229607)
Что это за страсть такая?


Объяви массив по другому:
PHP код:

private Color[][] Pixels=new Color[10][]; 


Страсть-самый простой способ из числа сделать массив цифр, а выглядит она так:
PHP код:

int lol=122345678;
string[] lol_str=Split.(lol.ToString().Replase(""," ")," ");//сплит не держит пустую ""
int lol_int= new int[];
for(
int i=0;i<lol_str.Length();i++) lol_int[i]=int.Parse(lol_str[i]); 


pie 08.06.2012 09:45

Ответ: Вопросы от новичка
 
Всем привет! У меня появилось 2 вопроса:
1) Есть ли где нибудь пример палитры которая высвечивается в GUI и при выборе цвета некий объект тоже меняет цвет.
2) Как заставить объект двигаться по поинтам. То бишь по определенному пути.

pax 08.06.2012 10:26

Ответ: Вопросы от новичка
 
1) Найди картинку с палитрой, читай с нее цвет пикселя. В более сложном случае тебе надо работать с HSV/HSL/HSB
2) Тут был хороший пример перемещения по вэйпоинтам. А вообще все зависит от задачи.

pie 08.06.2012 15:31

Ответ: Вопросы от новичка
 
У кого есть или кто знает где найти дайте ссылку пожалуйста на пример реализации техники. как то давно сам находил. теперь никак не могу найти. там можно было переключаться между разными средствами передвижения. там был внедорожник, вертолет, самолет, катер, танк.

is.SarCasm 08.06.2012 22:41

Ответ: Вопросы от новичка
 
Цитата:

`System.IO.File' does not contain a definition for `WriteAllLines'
WTF?

pax 08.06.2012 22:49

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от is.SarCasm (Сообщение 229866)
WTF?

Платформа? Какие выбраны настройки Mono? 2.0 или 2.0 Subset? Второй урезанный. Да и не обещал никто, что абсолютно все функции будут реализованы в Mono из Net Framework, который использует Unity.

RegIon 09.06.2012 09:03

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 229867)
Платформа? Какие выбраны настройки Mono? 2.0 или 2.0 Subset? Второй урезанный. Да и не обещал никто, что абсолютно все функции будут реализованы в Mono из Net Framework, который использует Unity.

Я вообще думаю Mono'е пофиг на всё, оно тупо библиотеки dll цепляет, а оттуда функции, бывает не находить некоторые...

pax 09.06.2012 12:31

Ответ: Вопросы от новичка
 
По умолчанию в настройках Unity стоит Net 2.0 Subset, это урезанная часть Net Framework. В ней отсутствует больше функционала, чем в 2.0

Так что ищи настройку в Player Settings

Amatsu 09.06.2012 13:47

Ответ: Вопросы от новичка
 
Кто-нить сталкивался с необходимостью получения списка параметров из шейдера, используемого в материале гейм обжекта?
Есть ГО, у него материал, у него кастомный шейдер. Нужно через скрипт получить список public-переменных этого скрипта (все текстуры, все float-значения и т.д.)

pax 09.06.2012 14:31

Ответ: Вопросы от новичка
 
Сделать список возможных свойств и проверять на http://unity3d.com/support/documenta...sProperty.html другого варианта не вижу.

Amatsu 10.06.2012 23:48

Ответ: Вопросы от новичка
 
Кто-нить может подсказать пример бесплатной воды на юнити на манер сэмпла Water4PRO, адекватно работающей с туманом, а так же позволяющей загружаться для больших пространств?

RegIon 11.06.2012 17:22

Ответ: Вопросы от новичка
 
Думаю так не проканает, так как в free нету рендера в текстуру....

is.SarCasm 11.06.2012 19:49

Ответ: Вопросы от новичка
 
Возможно ли проиграть в юнити звуки в формате .mid ? Если да, то как?

RegIon 12.06.2012 09:59

Ответ: Вопросы от новичка
 
http://ru.wikipedia.org/wiki/MIDI#.D...BB.D0.BE.D0.B2
Если только ручками распарсить, а так нет

pie 12.06.2012 16:38

Ответ: Вопросы от новичка
 
Проблемы с кириллицей в cs скриптах. В js такой проблемы не наблюдается. вместо русских букв непонятные каракули. Как можно исправить? Благодарю за внимание.

WISHMASTER35 12.06.2012 22:11

Ответ: Вопросы от новичка
 
pie, т.е. когда пишешь неправильно или открывает в неправильной кодировке? Там при открытии файла в mono можно выбрать кодировку. Вопрос только в какой кодировке оно потом сохранит, чтобы не было снова проблем.

Как узнать на каком объекте стоит CharacterController? В событии OnControllerColliderHit можно как-то проверить какой стороной столкнулись? Так (controller.collisionFlags & CollisionFlags.CollidedBelow) != 0 не работает т.к. событие коллизия может быть со стеной, но персонаж стоять может и на земле.

Вот так можно. Не знаю, может есть лучше способ.
void OnControllerColliderHit(ControllerColliderHit hit) {
float footY = transform.position.y - controller.height/2 + controller.center.y;
if( hit.point.y < footY+controller.stepOffset ) {
groundTag = hit.collider.tag.ToLower();
}
}

pie 13.06.2012 20:34

Ответ: Вопросы от новичка
 
Проблемы с кириллицей решены. Стандартная студия сохраняет код в UNI-8. Но не совсем то что надо. Я использовал Notepad++. Посмотрел кодировку скрипта и там стояло UNI-8(Без BOM). Я поставил просто UNI-8 и сохранил. Теперь кириллица отображается корректно.

Возник новый вопрос. Как общаются скрипты я прочел, а как общаться между скриптами если они находятся на объектах в разных комнатах (scene). То есть, допустим есть скрипт настройки графики в одной сцене. Настраиваем, сохраняем значения. Переходим в другую комнату и передаем значения скрипту который настраивает графику.

is.SarCasm 14.06.2012 13:03

Ответ: Вопросы от новичка
 
Я задавал этот вопрос ровно страницу назад. Используй статические классы.

pie 14.06.2012 13:50

Ответ: Вопросы от новичка
 
Хорошо. Спасибо. Новый вопрос. Как заставить MeshCollider не взаимодействовать с одним конкретным, заданным объектом. А с остальными чтобы работало. Игнорировать лучи не вариант.

cahekp 14.06.2012 14:24

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pie (Сообщение 230331)
Хорошо. Спасибо. Новый вопрос. Как заставить MeshCollider не взаимодействовать с одним конкретным, заданным объектом. А с остальными чтобы работало. Игнорировать лучи не вариант.

Используй слои: http://unity3d.com/support/documenta...detection.html

pie 15.06.2012 16:46

Ответ: Вопросы от новичка
 
Снова всем привет! Вы наверное встречали в большинстве шутеров дробовик, а конкретно его особенность в том что можно стрелять не доперезаредив оружие. То есть можно в оружие засунуть один патрон и стрелять. Так вот. Хотел бы у Вас поинтересоваться как переделать мой скрипт чтобы такое реализовать? Вот скрипт:

PHP код:

public IEnumerator CoroutineShootGunReload(){
        
reload false;
        
        
anim.PlayQueued(ShootGunAnimations.start_reload.name);
        yield return new 
WaitForSeconds(ShootGunAnimations.start_reload.length);
        for(
int i 0WeaponParameters.maxAmmoInClipi++)
        {
            
anim.PlayQueued(ShootGunAnimations.insert_reload.name);
            yield return new 
WaitForSeconds(ShootGunAnimations.insert_reload.length);
            
gunAmmo++;
            
WeaponParameters.maxAmmo--;
        }
        
        
anim.PlayQueued(ShootGunAnimations.after_reload.name);
        yield return new 
WaitForSeconds(ShootGunAnimations.after_reload.length 0.5f);
        
        
canShoot true;
        
reload true;
    } 


cahekp 15.06.2012 18:20

Ответ: Вопросы от новичка
 
PHP код:

void Update () {
// ...
if (Input.GetMouseButtonDown(0)) {
    if (
gunAmmo 0) {
        
// Останавливаем выполнение корутины, если она работала
        
StopCoroutine("CoroutineShootGunReload");
        
// Стреляем!
        // ...
    
}
}
// ...


Не забываем ставить "Спасибо", если ответ помог. :)

pie 15.06.2012 18:49

Ответ: Вопросы от новичка
 
Не помогает((. После нажатия на ЛКМ перезарядка продолжается после первого же выстрела.

cahekp 15.06.2012 19:30

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pie (Сообщение 230430)
Не помогает((. После нажатия на ЛКМ перезарядка продолжается после первого же выстрела.

Оно реально перезаряжает? Или только анимация перезарядки проигрывается?
Нужно больше исходникофф!!

pie 15.06.2012 20:31

Ответ: Вопросы от новичка
 
И анимация загрузки происходит и патроны прибавляются. Возможно коронтин и отключается, но вот цикл не отключается.

WISHMASTER35 20.06.2012 00:42

Ответ: Вопросы от новичка
 
animation[name].time = 0; Что после этого надо написать, чтобы применить этот кадр?
Или сразу вернуть анимацию в начальное положение. Или отменить все анимации.
Так можно gameObject.SampleAnimation( clip, 0 );

Hurrit 20.06.2012 03:37

Ответ: Вопросы от новичка
 
да, блин, посоны, поясните как на этом чудо-юде пилить 2д платформер? Никак не разобрался, как всё таки запилить спрайт.

is.SarCasm 20.06.2012 09:49

Ответ: Вопросы от новичка
 
Hurrit, на сколько я понял, юнити считает вполне нормальным делать всё 2d плейнами с текстурами ( а коллизии вообще как в 3d ). Только в камере нужно поставить projection -> ortographic

WISHMASTER35 21.06.2012 17:19

Ответ: Вопросы от новичка
 
Можно сделать, чтобы когда я выбирал в Project файл моего формата, то появлялся мой инспектор?
И можно сделать что-то типа TextAsset, но для моего формата?

pax 21.06.2012 23:12

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 230937)
Можно сделать, чтобы когда я выбирал в Project файл моего формата, то появлялся мой инспектор?
И можно сделать что-то типа TextAsset, но для моего формата?

Есть ScriptableObject. С помощью него можно делать свои объекты типа физических материалов или GUISkin. Возможно тебе он подойдет. Инспектор к нему можно написать.

Lowlet 21.06.2012 23:28

Ответ: Вопросы от новичка
 
Можно ли просчитать физику в редакторе,не запуская play mode.Либо просчитать в play mode и сохранить изменения?

pax 21.06.2012 23:41

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Lowlet (Сообщение 230984)
Можно ли просчитать физику в редакторе,не запуская play mode.Либо просчитать в play mode и сохранить изменения?

Какова задача?

Самый простой способ сохранить все из Play Mode - пусть все объекты сцены у одного родителя и не выключая Play сделать этого родителя префабом, а потом префаб после выключения Play перетащить в сцену предварительно все удалив.

Можно наиписать скрипт для редактора, сохраняющий позиции объектов и восстанавливающий эти позиции.

Lowlet 22.06.2012 00:06

Ответ: Вопросы от новичка
 
Цитата:

Какова задача?
Задача состоит в простом расположении физических объектов на поверхностях, дабы вручную не таскать.
Цитата:

Самый простой способ сохранить все из Play Mode - пусть все объекты сцены у одного родителя и не выключая Play сделать этого родителя префабом, а потом префаб после выключения Play перетащить в сцену предварительно все удалив.
Оу, спасибо за такой простой и действенный способ.
Цитата:

Можно наиписать скрипт для редактора, сохраняющий позиции объектов и восстанавливающий эти позиции.
Со скриптом, думаю, разберусь.Главное, что вы дали мне направление.Благодарю.

WISHMASTER35 22.06.2012 15:35

Ответ: Вопросы от новичка
 
Цитата:

Есть ScriptableObject. С помощью него можно делать свои объекты типа физических материалов или GUISkin. Возможно тебе он подойдет. Инспектор к нему можно написать.
Ну это ясно, но я хочу, чтобы можно было редактировать вне юнити. Типа плагины делать.
Да и работать с загруженными данными я хочу в другом потоке, поэтому ScriptableObject не подходит т.к. с ним только в юнитивском потоке можно работать.
Еще проблема в том что в ScriptableObject в одном списке не сохранишь разные типы данных, а хранить их в разных списках очень не удобно. Хотя пока я так и делаю, но это не выход.

cahekp 22.06.2012 16:29

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 231081)
Ну это ясно, но я хочу, чтобы можно было редактировать вне юнити. Типа плагины делать.
Да и работать с загруженными данными я хочу в другом потоке, поэтому ScriptableObject не подходит т.к. с ним только в юнитивском потоке можно работать.
Еще проблема в том что в ScriptableObject в одном списке не сохранишь разные типы данных, а хранить их в разных списках очень не удобно. Хотя пока я так и делаю, но это не выход.

Откуда у вас такие нетривиальные задачи появляются-то? :) Вот сколько сижу в Юнити, подавляющее большинство задач можно решить самыми простыми способами...

WISHMASTER35 22.06.2012 18:07

Ответ: Вопросы от новичка
 
cahekp, да я сам себе удивлялся) Часто задаюсь вопросами, которыми больше никто не задавался)
Мне бы и все равно как хранить данные, но надо, чтобы их можно было редактировать и загружать не из юнити. И чтобы с этими данными можно было работать в другом потоке, а это значит что наследовать от UnityEngine.Object нельзя т.е. ScriptableObject отпадает, разве только сразу после загрузки создавать из него такие же классы, но не наследованные от Object, но фактически дублировать классы не хочется.
Хотел сделать класс TileSet : ScriptableObject, который бы хранил список моих сериализованных объектов, которые не наследованы от Object, но в одном списке нельзя хранить разные типы объектов( т.е. можно, но в префаб сохраняться данные только базового класса.

pax 22.06.2012 19:57

Ответ: Вопросы от новичка
 
Ну собственно тогда делай инспектор для TextAsset с проверкой формата в OnEnable, если такой формат поддерживается твоим редактором - загружай нужный редактор. Я так делал для наших графов в Antares Universe. Если формат не читабелен - отображал дефолтный редактор. Правда графы все с расширением bytes были, так что в файлик просто добавь заголовок, чтобы проверить формат.

WISHMASTER35 22.06.2012 21:00

Ответ: Вопросы от новичка
 
Спасибо. Только DrawDefaultInspector() не отображает дефолтный инспектор. Может в OnEnable можно как-то выключить мой редактор?
Кстате, плохо, что формат файла не проверишь( Да и вообще лучше бы сделали FileAsset, а то для бинарных файлов использовать TextAsset как-то не логично)))

pax 22.06.2012 22:18

Ответ: Вопросы от новичка
 
для бинарных файлов TextAsset.bytes все байты "файла". Единственное сохранять надо непосредственно в файл и делать Refresh потом. Махинации да, но работать можно.

WISHMASTER35 22.06.2012 23:51

Ответ: Вопросы от новичка
 
pax, а ты пользовался Graphics.DrawMeshNow или Graphics.DrawMesh?
Не представляю зачем они в игре могут понадобится.
Я через Graphics.DrawMeshNow хочу рисовать модель в EditorWindow.
Уже почти все работает, но столкнулся с кучей проблем.
1) Нужно задавать RenderSettings.ambientLight, а после закрытия окна возвращать старой значение. Причем в событии Repaint это почему-то не срабатывает)
2) Загружать перспективную матрицу проекции, хотя это не проблема.
3) Почему-то надо изменять GL.SetRevertBackfacing на true. Ибо кулинг в OnGUI не так работает.
4) Без Transform нормально нельзя вращать модель(
5) Не работает тест глубины. И как ее включить я пока не пойму(

Вообщем код пока выглядит так
Код:

void OnGUI() {
        if(Event.current.type == EventType.Repaint) {
                GL.PushMatrix();
                float aspect = position.width/position.height;
                Matrix4x4 projMatrix = Matrix4x4.Perspective(65, aspect, 0, 100);
                GL.LoadProjectionMatrix(projMatrix);
                GL.SetRevertBackfacing(true);
                OnRender();
                GL.SetRevertBackfacing(false);
                GL.PopMatrix();
        }
}

private void OnRender() {
        material.SetPass(0);
        Graphics.DrawMeshNow(mesh, meshPosition, Quaternion.Euler(meshRotation));
}


pax 23.06.2012 12:07

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 231162)
pax, а ты пользовался Graphics.DrawMeshNow или Graphics.DrawMesh?

Нет, я не пробовал использовать ее в GUI. По моему там другие методы были для визуализации 3d в GUI... что-то я уже забыл...

WISHMASTER35 23.06.2012 13:02

Ответ: Вопросы от новичка
 
Везде рекомендуют создавать в сцене временный объект и камеру и рендерить объект в RenderTexture, а потом рисовать в OnGUI. Ужасный способ и только для Pro.
Других методов не нашел(

pax 23.06.2012 23:14

Ответ: Вопросы от новичка
 
Есть способ рисовать камеру через Handles.DrawCamera(...), в OnGUI я использовал Camera.Render для отрисовки внутри GUI, правда в рантайме а не в редакторе, но думаю будет одно и то же, только не забывать очищать глубину перед отрисовкой...

WISHMASTER35 24.06.2012 16:10

Ответ: Вопросы от новичка
 
Вообще не понял как отрендерить модель в EditorWindow с помощью Camera.Render.
Render это не статический метод. Получается камеру брать надо из сцены, а в сцене ее может и не быть.
И даже если вызвать Render у камеры из сцены, то отрендерится вся сцена и все равно не в мое окно(:

pie 24.06.2012 17:53

Ответ: Вопросы от новичка
 
Всем привет. У кого нибудь нету туториала синхронизации анимации по сети нету? Стандартный пример не подходит т.к. не работает на версии 3.4.


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

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