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)

pax 20.02.2013 11:25

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

public class npc 

Поясни что ты хочешь сделать, не на примере блица, а на примере того что хочешь получить, тогда подскажу как лучше.

burovalex 20.02.2013 12:25

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

Т.е. такой же объект, или класс (пока не очень разбираюсь как правильно) как GameObject, Camera и т.д.

Т.е. задача - создать свой класс npc, и добавить ему свойства position, life и т.д. Добавить методы Create(), Destroy().

Чтобы в дальнейшем в скрипте можно было обращаться к полям примерно так:
npc newNPC = npc.Create();
newNPC.position = Vector3(1,2,3);
newNPC.life = 100;

void Update()
{
if (newNPC.life<=0) { newNPC.Destroy(); }
}

Буду очень рад, если покажешь маленький наглядный примерчик!

Пакс, я нашел твой пример, это как раз то что мне нужно. Только там парочка непоняток.

Код:

using System; 
using System.Collections.Generic;

namespace test 

    //Начало класса 
    public class Worker 
    { 
        public int age = 0; 
        public string name; 
    } 
    //Конец класса 


    class Test 
    { 
        // Объявление и инициализация списка
        public List<Worker> workers = new List<Worker>();

        [STAThread] 
        static void Main(string[] args) 
        { 
            Worker wrkl = new Worker(); 
            wrkl.age = 30; 
            wrkl.name = "Петров Иван Сергеевич"; 

            // Добавление первого элемента списка
            workers.Add(wrkl);

            wrkl = new Worker(); 
            wrkl.age = 40; 
            wrkl.name = "Иванов Петр Сергеевич"; 

            // Добавление второго элемента списка
            workers.Add(wrkl);
           
            // Перебор всех элементов списка
            foreach(Worker worker in workers)
            {
                Console.WriteLine(worker .name + " - " + worker .age + " года");
            }

            // Очистка списка
            workers.Clear();
        } 
    } 
}


Ругался так: (28,13): error CS0120: An object reference is required to access non-static member `test.Test.workers'
Поправил строку на public static List<Worker> workers = new List<Worker>();
Ошибка пропала, но ругается что имя скрипта не совпадает с внутрескриптовым. (Пробовал и test и Test, всё равно ругается..)
Помоги плиз, как надо обозвать скрипт, и можно в твоём примере добавить MonoBehavior??

pax 20.02.2013 12:40

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

public class npcMonoBehaviour
{
    public 
float life;

    public static 
npc Create(string npcName)
    {
          return new 
GameObject(npcName).AddComponent<npc>();
    }

    public 
void DestroyMe()
    {
         
Destroy(gameObject);
    }


Game.cs
PHP код:

public class GameMonoBehaviour
{
   
npc newNPC;

   
void Start()
   {
     
newNPC npc.Create("MySuperNPC");
     
newNPC.transform.position = new Vector3(1,2,3);
     
newNPC.life 100;
   }

   
void Update()
   {
      if (
newNPC!= null && newNPC.life<=0) { newNPC.DestroyMe(); }
   }



burovalex 20.02.2013 16:02

Ответ: Вопросы от новичка
 
хм, спасибо пакс! вроде понятно, а вроде и запутанее стало ))
Наверное просто надо привыкать..

После запуска зашел обратно в сцену, и понял что таким образом создаются новые GameObject'ы и просто в них добавляются скрипты npc, так?

pax 20.02.2013 16:15

Ответ: Вопросы от новичка
 
Так, ты же хотел создать как камеру
PHP код:

var myCamera = new GameObject("MyCamera").AddComponent<Camera>(); 

На самом деле можно сложнее, можно создать объект (можно не пустой, а с моделью), поместить на него скрипт и сохранить как префаб (в окно Project). А потом при создании загружать префаб как ресурс и делать его копию.

burovalex 20.02.2013 20:37

Ответ: Вопросы от новичка
 
Пакс, спасибо, немного хоть разобрался, вообще помогаешь - респект тебе!! Можно тебя сэнсэем по юнити называть? :) И понял что по сути мне сейчас и не надо вызывать методы с другого скрипта. Получается что скрипт и так делает ГеймОбджекты индивидуальными объектами с одинаковыми полями.

Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..

RegIon 20.02.2013 21:00

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

Сообщение от burovalex (Сообщение 253311)
Пакс, спасибо, немного хоть разобрался, вообще помогаешь - респект тебе!! Можно тебя сэнсэем по юнити называть? :) И понял что по сути мне сейчас и не надо вызывать методы с другого скрипта. Получается что скрипт и так делает ГеймОбджекты индивидуальными объектами с одинаковыми полями.

Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..

Код:

public GameObject npc;
//остальной код
go = (GameObject)Instantiate(npc);


burovalex 20.02.2013 21:07

Ответ: Вопросы от новичка
 
Не Костян, я имею ввиду если у тебя не публичная, а скрипт сам должен найти префаб или любой другой ГаймОбжект

RegIon 20.02.2013 21:18

Ответ: Вопросы от новичка
 
http://docs.unity3d.com/Documentatio...ject.Find.html

pax 20.02.2013 21:46

Ответ: Вопросы от новичка
 
1. Ложишь префаб в папку Resources с названием npc. На нем пусть уже есть скрипт npc.
2. npc newNPC = ((GameObject)Instantiate(Resources.Load("npc", typeof(GameObject)))).GetComponent<npc>();

WISHMASTER35 20.02.2013 22:10

Ответ: Вопросы от новичка
 
Как в моно работать с файловой системой?
Смотрю этот http://wiki.unity3d.com/index.php?title=FileBrowser пример, но ничего не понимаю.
Класс BehaveLibrary у меня вообще не находит.

Немного начал понимать. Вот простой код.
Код:

                string[] items;
                if(path.Equals("/")) {
                        items = Directory.GetLogicalDrives();
                } else {
                        items = Directory.GetDirectories(path);
                }
               
                foreach(string item in items) {
                        if( GUILayout.Button(item) ) {
                                path = item;
                        }
                }

Только надо как-то DVD ром и скрытые папки и файлы как-то убрать.

burovalex 20.02.2013 22:20

Ответ: Вопросы от новичка
 
У меня сейчас вылез непонятный баг, которого раньше не было. Ничего не понимаю, толи под вечер бошка не соображает, но НЕ ВИЖУ КОСЯК!
ПОМОГИТЕ!!


PHP код:

using UnityEngine;
using System.Collections;



public class 
Grid MonoBehaviour {    
    public  
Terrain            thisTerrain;
    public     static 
int         gridMaxXgridMaxZ;
    public     
float             gridHeight;
    public     
float[,]         gridFloat;
    public  
int[,]            gridDensity;
    public  
int[,]            gridFerlity;
    public  
GameObject[,]    gridEl;
    public  
GameObject        cub;                
    
// Use this for initialization
    
void Start () {
        
thisTerrain = (Terrain)GetComponent<Terrain>();
        
gridMaxX = (int)thisTerrain.terrainData.size.x;
        
gridMaxZ = (int)thisTerrain.terrainData.size.z;
        
gridHeight = (float)thisTerrain.terrainData.size.y;
        
gridFloat = new float[gridMaxX,gridMaxZ];
        
cub GameObject.CreatePrimitive(PrimitiveType.Cube);
        
cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f);
        print(
cub.transform.localScale.x);  //есть результат
        
for (int z=1z<gridMaxZz++)            
            {
            for (
int x=1x<gridMaxXx++)        
                {
                    
gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z));
                    print(
"1 "+cub.transform.localScale.x);  // есть результат
                    
gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка
                    
print("2 "+cub.transform.localScale.x);  //нет результата
                    
gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z);
                }
            }
            
    }




using UnityEngine;
using System.Collections;



public class Grid : MonoBehaviour {
public Terrain thisTerrain;
public static int gridMaxX, gridMaxZ;
public float gridHeight;
public float[,] gridFloat;
public int[,] gridDensity;
public int[,] gridFerlity;
public GameObject[,] gridEl;
public GameObject cub;
// Use this for initialization
void Start () {
thisTerrain = (Terrain)GetComponent<Terrain>();
gridMaxX = (int)thisTerrain.terrainData.size.x;
gridMaxZ = (int)thisTerrain.terrainData.size.z;
gridHeight = (float)thisTerrain.terrainData.size.y;
gridFloat = new float[gridMaxX,gridMaxZ];
cub = GameObject.CreatePrimitive(PrimitiveType.Cube);
cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f);
print(cub.transform.localScale.x);
//есть результат
for (int z=1; z<gridMaxZ; z++)
{
for (int x=1; x<gridMaxX; x++)
{
gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z));
print("1 "+cub.transform.localScale.x); // есть результат
gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка
print("2 "+cub.transform.localScale.x); //нет результата
gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z);
}
}

}
}

Пишет NullReferenceException: A null value was found where an object instance was required.
Grid.Start ()


Главное в консоле пишет размер (дебаг при помощи print) до инстанса, а после инстанса нулл :4to:

WISHMASTER35 20.02.2013 22:25

Ответ: Вопросы от новичка
 
burovalex, что с форматированием? У меня глаза болят.
Цитата:

Пишет что нулл в инстансе(куб)
Цитата:

а после инстанса нулл
Так все же где?
Кстати, правильно cube, а не cub.

burovalex 20.02.2013 22:36

Ответ: Вопросы от новичка
 
А что с форматом, специально подсветил синим основные строки. Короче сделал два варианта )
cub - это название объекта типа GameObject, а так cub = GameObject.CreatePrimitive(PrimitiveType.Cube);

seaman 20.02.2013 22:46

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

скрытые папки и файлы как-то убрать
Directory.GetFiles вызывает исключение при попытке обратиться к скрытым фалам и папкам. Нужно просто обработать это исключение. Пример на МСДН:
ПРИМЕР

seaman 20.02.2013 22:52

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

специально подсветил синим основные строки.
В ошибке обычно пишет номер строки где ошибка. Лучше бы просто привели полностью ошибку, или указали сами этот номер строки. У меня вот на мониторе строки цветом не отличаются.
Куда ошибка? На Instantiate, на print, или на следующую строку?

burovalex 20.02.2013 22:55

Ответ: Вопросы от новичка
 
Поправил, во 2-м оффтопе чётче видно
Пишу что ошибка на втором кадре, потому что один инстанс он всё таки создаёт


PHP код:

using UnityEngine;
using System.Collections;



public class 
Grid MonoBehaviour {    
    public  
Terrain            thisTerrain;
    public     static 
int         gridMaxXgridMaxZ;
    public     
float             gridHeight;
    public     
float[,]         gridFloat;
    public  
int[,]            gridDensity;
    public  
int[,]            gridFerlity;
    public  
GameObject[,]    gridEl;
    public  
GameObject        cub;                
    
// Use this for initialization
    
void Start () {
        
thisTerrain = (Terrain)GetComponent<Terrain>();
        
gridMaxX = (int)thisTerrain.terrainData.size.x;
        
gridMaxZ = (int)thisTerrain.terrainData.size.z;
        
gridHeight = (float)thisTerrain.terrainData.size.y;
        
gridFloat = new float[gridMaxX,gridMaxZ];
        
cub GameObject.CreatePrimitive(PrimitiveType.Cube);
        
cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f);
        print(
cub.transform.localScale.x);  //есть результат
        
for (int z=1z<gridMaxZz++)            
            {
            for (
int x=1x<gridMaxXx++)        
                {
                    
gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z));
                    print(
"1 "+cub.transform.localScale.x);  // есть результат
                    
gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка
                    
print("2 "+cub.transform.localScale.x);  //нет результата
                    
gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z);
                }
            }
            
    }




using UnityEngine;
using System.Collections;



public class Grid : MonoBehaviour {
public Terrain thisTerrain;
public static int gridMaxX, gridMaxZ;
public float gridHeight;
public float[,] gridFloat;
public int[,] gridDensity;
public int[,] gridFerlity;
public GameObject[,] gridEl;
public GameObject cub;
// Use this for initialization
void Start () {
thisTerrain = (Terrain)GetComponent<Terrain>();
gridMaxX = (int)thisTerrain.terrainData.size.x;
gridMaxZ = (int)thisTerrain.terrainData.size.z;
gridHeight = (float)thisTerrain.terrainData.size.y;
gridFloat = new float[gridMaxX,gridMaxZ];
cub = GameObject.CreatePrimitive(PrimitiveType.Cube);
cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f);
print(cub.transform.localScale.x);
//есть результат
for (int z=1; z<gridMaxZ; z++)
{
for (int x=1; x<gridMaxX; x++)
{
gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z));
print("1 "+cub.transform.localScale.x); // есть результат
gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка
print("2 "+cub.transform.localScale.x); //нет результата
gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z);
}
}

}
}

Пишет NullReferenceException: A null value was found where an object instance was required.
Grid.Start ()


Главное в консоле пишет размер (дебаг при помощи print) до инстанса, а после инстанса нулл :4to:

seaman 20.02.2013 23:33

Ответ: Вопросы от новичка
 
Не инициализирован gridEl
Код:

void Start () {
  gridEl = new gridEl[gridMaxX, gridMaxZ]


WISHMASTER35 20.02.2013 23:39

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

Сообщение от seaman (Сообщение 253339)
Directory.GetFiles вызывает исключение при попытке обратиться к скрытым фалам и папкам. Нужно просто обработать это исключение.

Мне как бы незачем обращаться к скрытым папкам. Мне надо чтобы Directory.GetDirectories / GetFiles не возвращали скрытых папок и файлов.
Но видно придется потом проверять и удалять скрытые элементы из массива.

seaman 20.02.2013 23:51

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

WISHMASTER35 20.02.2013 23:54

Ответ: Вопросы от новичка
 
seaman, должен быть способ проверить атрибуты файла. Разве Mono настолько кастрирован.

seaman 21.02.2013 00:11

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

WISHMASTER35 21.02.2013 00:31

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

                for(int i=0; i<items.Count; ) {
                        FileAttributes attr = items[i].Attributes;
                        if((attr & FileAttributes.Hidden) == FileAttributes.Hidden) {
                                items.RemoveAt( i );
                        } else {
                                i++;
                        }
                }

Только почему-то жесткие диски удаляются, а остаются только съемные носители, которые не нужны.

WISHMASTER35 21.02.2013 20:08

Ответ: Вопросы от новичка
 
Как узнать DirectoryInfo указывает на папку или файл? Замучился уже, но не вижу способа.

seaman 21.02.2013 20:49

Ответ: Вопросы от новичка
 
DirectoryInfo.EnumerateDirectories() (или GetDirectories())- возвращает коллекцию всех подкаталогов данного каталога.
DirectoryInfo.EnumerateFiles() (или GetFiles())- возвращает коллекцию всех файлов данного каталога.

pax 21.02.2013 20:52

Ответ: Вопросы от новичка
 
Берешь атрибуты http://msdn.microsoft.com/ru-ru/libr...ttributes.aspx

сравниваешь вот таким образом:
http://msdn.microsoft.com/ru-ru/libr...ttributes.aspx

со значением FileAttributes.Directory

WISHMASTER35 21.02.2013 21:42

Ответ: Вопросы от новичка
 
seaman, а если в каталоге нет не папок, не файлов?
pax, пробовал FileAttributes.Directory, но допустил ошибку в другом месте и решил, что FileAttributes.Directory не работает)
Кстати, съемные диски не FileAttributes.Directory.

WISHMASTER35 06.03.2013 21:40

Ответ: Вопросы от новичка
 
Вложений: 1
Можно сделать рендер не на весь экран, а в некотром окошке? Проблема в том, что размеры эти окна не задаются жестко, а вычисляются через GUILayout. Вообщем на скрине видно.
А сделать свой редактор для игры сложно) Выглядит совсем фигово(

seaman 06.03.2013 22:44

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

Можно сделать рендер не на весь экран, а в некотром окошке?
Не очень понятно типа свое окно программы? Или рендер второй камеры в часть окна? Второе:
Camera.rect

WISHMASTER35 06.03.2013 22:54

Ответ: Вопросы от новичка
 
Пишу так
Код:

Rect viewPort = GUILayoutUtility.GetRect(0, 0, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
if(Event.current.type == EventType.Repaint) {
viewPort.x /= Screen.width;
viewPort.y /= Screen.height;
viewPort.width /= Screen.width;
viewPort.height /= Screen.height;
Camera.mainCamera.rect = viewPort;
}

Но неправильно работает. Разные системы координат. Нужно как-то ось Y изменить.

pax 06.03.2013 22:58

Ответ: Вопросы от новичка
 
viewPort.center = GUIUtility.GUIToScreenPoint(viewPort.center);
а вообще есть camera.pexelRect

WISHMASTER35 06.03.2013 23:27

Ответ: Вопросы от новичка
 
Вложений: 1
GUIUtility.GUIToScreenPoint переводит координаты из оконных в глобальные т.е. просто pos -= window.pos. Вообщем не то что нужно.
Вот так работает.
Код:

Vector2 center = viewPort.center;
center.y = Screen.height - center.y;
viewPort.center = center;
Camera.mainCamera.pixelRect = viewPort;

Все бы хорошо, но отступы между боксами мешают.
И еще пару вопросов появилось.
1) Как сделать, чтобы текст не переносился на новую строку? На скрине видно, что gui пытается впихнуть весь текст в rect и в итоге совсем ничего не видно.
2) И как сделать поле ввода для числа?
Так пишу, но фигово получается.
Код:

string text = TextField(label, value.ToString());
int.TryParse(text, out value);
return value;

Удобно, когда ввести можно любую строку из чисел, например 0001.
А число 1 получится только при потери фокуса.

Morganolla 07.03.2013 19:11

Ответ: Вопросы от новичка
 
У меня странный баг аудиосорса.
В Start() прописал ему loop=true; - циклическое проигрывание.
В Update() чтобы он играл в цикле надо принудительно дать ему холостой Пуск-Стоп, и только на следующий Пуск он будет играть в цикле!! А на перый Пуск он всегда играет один раз!!!

Еще иногда в PlayOneShot(clip) играет не тот клип , а предыдущий...

может это кряк слетел :)

seaman 07.03.2013 19:57

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

может это кряк слетел
Скорее Вы что-то не то делаете. Код в студию!

pie 08.03.2013 16:17

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

EvilOkta 08.03.2013 16:31

Ответ: Вопросы от новичка
 
Mathf.clamp вроде подходит
http://docs.unity3d.com/Documentatio...thf.Clamp.html

pax 08.03.2013 16:56

Ответ: Вопросы от новичка
 
Если это тело привязано к другому, относительно которого надо ограничить вращение, то можно использовать Hinge Joint и его параметры Limits Min/Max

WISHMASTER35 08.03.2013 23:41

Ответ: Вопросы от новичка
 
Как создать такую абстракцию, чтобы в метод можно было передать любой массив или List<...>?
Для этого вроде бы есть интерфейс IList, но List<...> не удается передать.

pax 08.03.2013 23:44

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

pie 09.03.2013 01:24

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

WISHMASTER35 09.03.2013 02:24

Ответ: Вопросы от новичка
 
pax, не, надо было просто IList написать т.е. без дженерика.
pie, если твоя аркада будет с видом сверху в каком-то мультяшном стиле, то норм.

WISHMASTER35 09.03.2013 02:51

Ответ: Вопросы от новичка
 
Недавно тут писал про изменение pixelRect у камеры. Так вот изменяю, в редакторе все хорошо, но в билде похоже очистка буферов за пределами pixelRect не работает, а там у меня gui рисуется. Как быть?

Еще проблема в билде появилась. В логе вот такая ошибка. Что она значит?
Код:

ArgumentException: Encoding name 'IBM437' not supported

Parameter name: name
  at System.Text.Encoding.GetEncoding (System.String name) [0x00000] in <filename unknown>:0

  at Ionic.Zip.ZipFile..cctor () [0x00000] in <filename unknown>:0
Rethrow as TypeInitializationException: An exception was thrown by the type initializer for Ionic.Zip.ZipFile
  at BlockSetImporter.Import (.BlockSet blockSet, System.String path) [0x00000] in <filename unknown>:0

  at BlockSetEditorScreen.Open (System.String path) [0x00000] in <filename unknown>:0

  at OpenFileBrowser.Toolbar () [0x00000] in <filename unknown>:0

  at FileBrowser.OnGUI () [0x00000] in <filename unknown>:0

seaman, ты с этой проблемой встречался. Разобрался с ней?

seaman 09.03.2013 03:06

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

seaman, ты с этой проблемой встречался.
Да? Не помню.
Посмотрел документацию. Попробуй использовать конструктор с явным указанием кодировки:
public ZipFile(string fileName, System.Text.Encoding encoding)

WISHMASTER35 09.03.2013 03:09

Ответ: Вопросы от новичка
 
seaman, тут ты писал http://unity3d.ru/distribution/viewt...2&p=41144#wrap про эту ошибку.

Arton 09.03.2013 05:26

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

Сообщение от pie (Сообщение 254496)
Это нормально для аркады?

Норм.

pax 09.03.2013 08:41

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

Сообщение от WISHMASTER35 (Сообщение 254498)
Недавно тут писал про изменение pixelRect у камеры. Так вот изменяю, в редакторе все хорошо, но в билде похоже очистка буферов за пределами pixelRect не работает, а там у меня gui рисуется. Как быть?

отдельной камерой очищай весь экран

Цитата:

Сообщение от WISHMASTER35 (Сообщение 254498)
Еще проблема в билде появилась. В логе вот такая ошибка. Что она значит?
Код:

ArgumentException: Encoding name 'IBM437' not supported

Parameter name: name
  at System.Text.Encoding.GetEncoding (System.String name) [0x00000] in <filename unknown>:0

seaman, ты с этой проблемой встречался. Разобрался с ней?

раньше проблема решалась добавлением в проект библиотек I18N из папки Mono в Unity в Plugins. На Unity 4 не пробовал.

WISHMASTER35 09.03.2013 14:55

Ответ: Вопросы от новичка
 
pax, я думаю пусть одна камера будет на весь экран, но рисовать только gui, а другая камера будет в своем окошке рисовать только 3D.
Цитата:

раньше проблема решалась добавлением в проект библиотек I18N из папки Mono в Unity в Plugins.
То есть в билде моно совсем урезанный и это нельзя настроить?
В папке Mono много либ с названием I18N. Какую надо брать?
UPD
Скопировал все что начинается на I18N из папки \Editor\Data\Mono\lib\mono\unity. Заработало.
Вот интересно на всех ли платформах теперь будет работать. И все ли те либы нужны.

pax 09.03.2013 22:27

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

Сообщение от WISHMASTER35 (Сообщение 254515)
pax, я думаю пусть одна камера будет на весь экран, но рисовать только gui, а другая камера будет в своем окошке рисовать только 3D.

OnGUI не связан с какой-то конкретной камерой. Весь GUI рисуется после того как все камеры завершили рендеринг. Поэтому я и написал что пусто одна камера очищает весь экран. Она должна рисовать первой. Вторая может ничего не очищать и рисовать 3D.

WISHMASTER35 10.03.2013 00:08

Ответ: Вопросы от новичка
 
pax, мне кажется GUILayer после рендеринга перенастраивает камеру и рендерит GUI. Вот только буферы не чистит.

Сейчас появилась проблема с mecanim. Есть модель солдата с настроенным Avatar'ом.
И есть анимации из примера 3rd person shooter. Задаю этим анимациям Avatar Definition: Copy From Other Avatar и задаю аватар солдата.
В итоге солдата так корявит, что человека в нем не признаешь.
Почему такое происходит?
Анимации из 3rd person shooter со своим аватаром нормально работали.
UPDATE
Если создавать свой авотар, то все нормально) Еще не доконца понимаю как оно работает)

pax 10.03.2013 00:56

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

а по поводу GUILayer - этот компонент служит для вывода GUITexture и GUIText и все

WISHMASTER35 10.03.2013 01:04

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

а по поводу GUILayer - этот компонент служит для вывода GUITexture и GUIText и все
Знал бы, то сносил бы GUILayer сразу)
Вообще не понятно почему GUITexture и GUIText сами себя в OnGUI не рисуют.

pax 10.03.2013 01:28

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

Сообщение от WISHMASTER35 (Сообщение 254548)
Вообще не понятно почему GUITexture и GUIText сами себя в OnGUI не рисуют.

Это избытки прошлого, компоненты оставлены для совместимости со старыми версиями Unity

WISHMASTER35 10.03.2013 01:41

Ответ: Вопросы от новичка
 
Это "для совместимости" всегда все портит. В конце концов накапливается куча дерьма.

pax 10.03.2013 01:47

Ответ: Вопросы от новичка
 
Как не странно, эти компоненты работают хорошо, а не как дерьмо. Просто надо справку внимательно читать.

WISHMASTER35 10.03.2013 02:40

Ответ: Вопросы от новичка
 
Да я не конкретно про эти компоненты.
Но как я понял сейчас GUILayer уже и не нужен.
А что в старых версиях не было OnGUI?

pax 10.03.2013 02:44

Ответ: Вопросы от новичка
 
Конкретно тебе GUILayer не нужен, а вот для новичков - нужен.
Я работаю с Unity версии 2.6, там он был, я не знаю когда он появился, но мне говорили что те компоненты перешли с совсем ранних версий.

WISHMASTER35 10.03.2013 02:51

Ответ: Вопросы от новичка
 
Новичкам намного проще использовать компонент GUITexture вместо пары строчек в скрипте?
Наверно проще, но ради этого оставлять скрипт на всегда не стоит.
Тем более могли бы переписать GUITexture и GUIText чтобы они работали и без GUILayer.
Вот и PropertyDrawer теперь останется на всегда таким.

WISHMASTER35 11.03.2013 02:03

Ответ: Вопросы от новичка
 
Я не пойму в Standard Assets нельзя создавать папку Editor?
Импортирую пост эффекты, папка Editor импортируется в корень. Перемещаю ее Image Effects (Pro Only), но начинают вылазить ошибки.
Instance of BloomAndLensFlaresEditor couldn't be created. The script class needs to derive from ScriptableObject and be placed in the Assets/Editor folder.

pax 11.03.2013 07:34

Ответ: Вопросы от новичка
 
Скрипты рантайм и редакторы для этих скриптов должны быть в одном месте. Standard Assets компилируется раньше чем все в проекте. Еще раньше по моему Plugins. Это получаются отдельные dll

WISHMASTER35 11.03.2013 19:23

Ответ: Вопросы от новичка
 
Странно как-то оно работает. Ну да ладно, переименовать Standard Asset не сложно)
Я вот вчера заметил, что если присвоить материал MeshRenderer'у, то создается копия материала. Присваивал и через material и через sharedMaterial. Может это потому что я в коде создаю этот Material, а не из ассетов?
Разобрался
Копия материала создается, если просто написать renderer.renderer.material != null.
Не подумал, что копия создается и сразу же присваивается.

WISHMASTER35 12.03.2013 21:29

Ответ: Вопросы от новичка
 
Смотрю на это видио http://www.youtube.com/watch?feature...&v=6klcDu8usJU
И вижу довольно сложные и интересные графы. Странно, что юнити не выложили этот проект, а выложили лишь простые демки.
Никто не делал прицеливание на Mecanim? Хочу сделать, чтобы в 3rd person персонаж целился. Хотя в mecanim и есть какая-то IK, но не ясно как ее использовать.

pax 12.03.2013 21:44

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

WISHMASTER35 13.03.2013 01:19

Ответ: Вопросы от новичка
 
Вложений: 2
Не заметил тех примерах т.к. пробовал их еще на free версии, в которой они не работают.
Все довольно просто выглядит, хотя результаты не идеальны, точнее в примере IK вообще ладонь выворачивает))
Взял модель из примера 3д шутер, хотел сделать такое же прицеливание, но получилась полная фигня. Оружие отрывается от рук.
Кстати, что это за шары вокруг пистолетов?
Пример с базукой не очень удачный.
Там базука привязана к голове и направляется через SetLookAtPosition, а руки привязаны к базуке через SetIKPosition.
Вот только в нормальных играх пистолет далеко не у головы. Вообщем-то это кажется не так сложно т.к. можно и пушку направить в нужную сторону, а затем к ней и руки направить. Но пока мне не очень понятно как это делать.

WISHMASTER35 15.03.2013 20:15

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


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

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