|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
20.02.2013, 12:40
|
#1411
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
npc.cs
public class npc: MonoBehaviour { public float life;
public static npc Create(string npcName) { return new GameObject(npcName).AddComponent<npc>(); }
public void DestroyMe() { Destroy(gameObject); } }
Game.cs
public class Game: MonoBehaviour { 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(); } } }
|
(Offline)
|
|
20.02.2013, 16:02
|
#1412
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
хм, спасибо пакс! вроде понятно, а вроде и запутанее стало ))
Наверное просто надо привыкать..
После запуска зашел обратно в сцену, и понял что таким образом создаются новые GameObject'ы и просто в них добавляются скрипты npc, так?
__________________
|
(Offline)
|
|
20.02.2013, 16:15
|
#1413
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Так, ты же хотел создать как камеру
var myCamera = new GameObject("MyCamera").AddComponent<Camera>();
На самом деле можно сложнее, можно создать объект (можно не пустой, а с моделью), поместить на него скрипт и сохранить как префаб (в окно Project). А потом при создании загружать префаб как ресурс и делать его копию.
|
(Offline)
|
|
20.02.2013, 20:37
|
#1414
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
Пакс, спасибо, немного хоть разобрался, вообще помогаешь - респект тебе!! Можно тебя сэнсэем по юнити называть? И понял что по сути мне сейчас и не надо вызывать методы с другого скрипта. Получается что скрипт и так делает ГеймОбджекты индивидуальными объектами с одинаковыми полями.
Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..
__________________
|
(Offline)
|
|
20.02.2013, 21:00
|
#1415
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от burovalex
Пакс, спасибо, немного хоть разобрался, вообще помогаешь - респект тебе!! Можно тебя сэнсэем по юнити называть? И понял что по сути мне сейчас и не надо вызывать методы с другого скрипта. Получается что скрипт и так делает ГеймОбджекты индивидуальными объектами с одинаковыми полями.
Единственное, что мне не хватает. Это как найти префаб для копирования.
Пробовал так, не работает - Instance(Resources.Load("npc1")); в иерархии он также называется..
|
public GameObject npc;
//остальной код
go = (GameObject)Instantiate(npc);
|
(Offline)
|
|
20.02.2013, 21:07
|
#1416
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
Не Костян, я имею ввиду если у тебя не публичная, а скрипт сам должен найти префаб или любой другой ГаймОбжект
__________________
|
(Offline)
|
|
20.02.2013, 21:18
|
#1417
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
20.02.2013, 21:46
|
#1418
|
Unity/C# кодер
Регистрация: 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>();
|
(Offline)
|
|
20.02.2013, 22:10
|
#1419
|
Бывалый
Регистрация: 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
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
У меня сейчас вылез непонятный баг, которого раньше не было. Ничего не понимаю, толи под вечер бошка не соображает, но НЕ ВИЖУ КОСЯК!
ПОМОГИТЕ!!
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); } } } }
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
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
burovalex, что с форматированием? У меня глаза болят.
Пишет что нулл в инстансе(куб)
|
Так все же где?
Кстати, правильно cube, а не cub.
|
(Offline)
|
|
20.02.2013, 22:36
|
#1422
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
А что с форматом, специально подсветил синим основные строки. Короче сделал два варианта )
cub - это название объекта типа GameObject, а так cub = GameObject.CreatePrimitive(PrimitiveType.Cube);
__________________
|
(Offline)
|
|
20.02.2013, 22:46
|
#1423
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
скрытые папки и файлы как-то убрать
|
Directory.GetFiles вызывает исключение при попытке обратиться к скрытым фалам и папкам. Нужно просто обработать это исключение. Пример на МСДН:
ПРИМЕР
|
(Offline)
|
|
20.02.2013, 22:52
|
#1424
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
специально подсветил синим основные строки.
|
В ошибке обычно пишет номер строки где ошибка. Лучше бы просто привели полностью ошибку, или указали сами этот номер строки. У меня вот на мониторе строки цветом не отличаются.
Куда ошибка? На Instantiate, на print, или на следующую строку?
|
(Offline)
|
|
20.02.2013, 22:55
|
#1425
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
Поправил, во 2-м оффтопе чётче видно
Пишу что ошибка на втором кадре, потому что один инстанс он всё таки создаёт
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); } } } }
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)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:30.
|