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

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

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

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

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

npc.cs
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
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(); }
   }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 16:02   #1412
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

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

После запуска зашел обратно в сцену, и понял что таким образом создаются новые GameObject'ы и просто в них добавляются скрипты npc, так?
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 16:15   #1413
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Так, ты же хотел создать как камеру
var myCamera = new GameObject("MyCamera").AddComponent<Camera>(); 
На самом деле можно сложнее, можно создать объект (можно не пустой, а с моделью), поместить на него скрипт и сохранить как префаб (в окно Project). А потом при создании загружать префаб как ресурс и делать его копию.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 20:37   #1414
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

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

Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 21:00   #1415
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Вопросы от новичка

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

Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..
public GameObject npc;
//остальной код
go = (GameObject)Instantiate(npc);
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 21:07   #1416
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

Не Костян, я имею ввиду если у тебя не публичная, а скрипт сам должен найти префаб или любой другой ГаймОбжект
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 21:18   #1417
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Вопросы от новичка

http://docs.unity3d.com/Documentatio...ject.Find.html
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 21:46   #1418
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

1. Ложишь префаб в папку Resources с названием npc. На нем пусть уже есть скрипт npc.
2. npc newNPC = ((GameObject)Instantiate(Resources.Load("npc", typeof(GameObject)))).GetComponent<npc>();
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:10   #1419
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Как в моно работать с файловой системой?
Смотрю этот 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 ром и скрытые папки и файлы как-то убрать.
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:20   #1420
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

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


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) до инстанса, а после инстанса нулл
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:25   #1421
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

burovalex, что с форматированием? У меня глаза болят.
Пишет что нулл в инстансе(куб)
а после инстанса нулл
Так все же где?
Кстати, правильно cube, а не cub.
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:36   #1422
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

А что с форматом, специально подсветил синим основные строки. Короче сделал два варианта )
cub - это название объекта типа GameObject, а так cub = GameObject.CreatePrimitive(PrimitiveType.Cube);
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:46   #1423
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Вопросы от новичка

скрытые папки и файлы как-то убрать
Directory.GetFiles вызывает исключение при попытке обратиться к скрытым фалам и папкам. Нужно просто обработать это исключение. Пример на МСДН:
ПРИМЕР
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:52   #1424
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Вопросы от новичка

специально подсветил синим основные строки.
В ошибке обычно пишет номер строки где ошибка. Лучше бы просто привели полностью ошибку, или указали сами этот номер строки. У меня вот на мониторе строки цветом не отличаются.
Куда ошибка? На Instantiate, на print, или на следующую строку?
(Offline)
 
Ответить с цитированием
Старый 20.02.2013, 22:55   #1425
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Вопросы от новичка

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


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) до инстанса, а после инстанса нулл
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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