 |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
22.10.2012, 15:05
|
#676
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Вопросы от новичка
Можно было и из ресурсов ГО загрузить.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
24.10.2012, 20:22
|
#677
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Вопросы от новичка
Имею два класса(файла скрипта):
main.cs :
using UnityEngine;
using System.Collections;
public class main : MonoBehaviour {
// Use this for initialization
public player[] pl = new player[2];
public void Position(GameObject go, float x, float y, float z){go.transform.position = new Vector3(x, y, z);}
public void Move(GameObject go, float x, float y, float z){go.transform.Translate(x, y, z);}
void Start () {
Camera cam = new GameObject("cam").AddComponent<Camera>();
cam.transform.position = new Vector3(0, 0, -5);
pl[0] = new GameObject("player1").AddComponent<player>();
pl[0].CreatePlayer(0, 0, "asd");
}
// Update is called once per frame
void Update () {
}
}
player.cs :
using UnityEngine;
using System.Collections;
public class player : MonoBehaviour
{
public main m;
void Awake() { m = GetComponent<main>(); }
public GameObject body, turret;
public string name;
void Start ()
{
}
public void CreatePlayer(int x, int z, string type)
{
body = GameObject.CreatePrimitive(PrimitiveType.Cube);
body.name = "body";
body.transform.parent = gameObject.transform;
m.Position(body, 0, -1.0f, 0);
body.transform.position = new Vector3(x, 0, z);
body.transform.localScale = new Vector3(1, 0.5f, 1);
turret = GameObject.CreatePrimitive(PrimitiveType.Sphere);
turret.name = "turret";
turret.transform.position = new Vector3(x, 0.5f, z);
turret.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
turret.transform.parent = body.transform;
name = type;
}
void Update()
{
if (m)
{
if (Input.GetKey(KeyCode.LeftArrow))
m.Move(body, -0.1f, 0, 0);
else if (Input.GetKey(KeyCode.RightArrow))
m.Move(body, 0.1f, 0, 0);
}
}
}
ну соответственно в сцене имею main (GameObject на котором висит main.cs). В результате при запуске имею следующую ошибку:
NullReferenceException: Object reference not set to an instance of an object
player.CreatePlayer (Int32 x, Int32 z, System.String type) (at Assets/player.cs:21)
main.Start () (at Assets/main.cs:17)
Двойной клик по ошибке отправляет в файо player.cs на строку:
m.Position(body, 0, -1.0f, 0);
вопрос1 - почему?
вопрос2 - как исправить?
Можно конечно просто писать body.transform.position... и т.д., тогда всё как надо работает. Но хочется как то упростить себе жизнь, подготовив основные функции для работы с движением/позицией/ротацией и т.д. (отходить от блица конечно надо скорее, но пока хочется печатать поменьше, точнее написать один раз много и потом писать по малу). Или надо эти мои общие функции писать не в классе main, а где то в другом месте?
UPD
решено:
добавил отдельный скрипт functions.cs
using UnityEngine;
using System.Collections;
public class functions : MonoBehaviour
{
public void Position(GameObject go, float x, float y, float z) { go.transform.position = new Vector3(x, y, z); }
public void Move(GameObject go, float x, float y, float z) { go.transform.Translate(x, y, z); }
}
и в нужных скриптах прописал
private functions m;
void Awake() {m = gameObject.AddComponent<functions>(); }
ну и далее m.Move...
наверное тоже очень некорректно, но работает.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
25.10.2012, 11:04
|
#678
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Кто работал с VK.Api помогите. Размещаю на стене пользователя запись. Для того чтобы сообщение было видно делаю размер игрового окна 1x1. Как мне вернуть первоначальное значение после размещения записи на стене?
VK.callMethod("resizeWindow", 1, 1);
VK.api('wall.post', {message: "текс"});
|
(Offline)
|
|
25.10.2012, 14:28
|
#679
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Думаю так у тебя заработает:
void Awake() { main = (main)FindObjectOfType(typeof(main)); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.10.2012, 14:30
|
#680
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
Думаю так у тебя заработает:
void Awake() { main = (main)FindObjectOfType(typeof(main)); }
|
Пост свой уже удалил, т.к. дошёл до этого на минуту раньше чем получил ответ. Но всё равно спасибо! Тем более, что этот же ответ подойдёт и в предыдущий мой пост. Только там я проблему решил очень корявым способом, сейчас заодно и исправлю.
Вообще заметил за собой такую вещь в большинстве случаев - думаю над чем то, думаю, никак не додумаюсь. Только спрошу на форуме как сделать то, над чем думал - сразу сам до решения дохожу. Волшебство Булочки, не иначе!
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
25.10.2012, 14:55
|
#681
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от St_AnGer
Вообще заметил за собой такую вещь в большинстве случаев - думаю над чем то, думаю, никак не додумаюсь. Только спрошу на форуме как сделать то, над чем думал - сразу сам до решения дохожу. Волшебство Булочки, не иначе! 
|
Нет это закономерно, потому что правильно задав вопрос ты уже на половину знаешь ответ
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.10.2012, 15:34
|
#682
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопросы от новичка
Как убрать слайдинг в стандартном Input Platform Controller?
визуально не получается. Слайдинг все равно есть. Что не есть хорошо
|
(Offline)
|
|
27.10.2012, 18:58
|
#683
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Кто-нибудь знает, если в Surface шейдере задать параметр noambient, т.е. выключить окружающий свет, то как сделать финальный цвет не черный?
|
(Offline)
|
|
27.10.2012, 19:14
|
#684
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от WISHMASTER35
Кто-нибудь знает, если в Surface шейдере задать параметр noambient, т.е. выключить окружающий свет, то как сделать финальный цвет не черный?
|
Пример хоть шейдера покажи
|
(Offline)
|
|
27.10.2012, 19:39
|
#685
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Ответ: Вопросы от новичка
Кто-нибудь знает, если в Surface шейдере задать параметр noambient, т.е. выключить окружающий свет, то как сделать финальный цвет не черный?
|
По логике если финальный цвет получается чёрный без амбиента, то можно его чорным сделать и с включённым амбиентом, тупо придав амбиенту чёрный цвет в Edit -> Render Settings. Тамже можно его и белым сделать и каким угодно.
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
27.10.2012, 21:52
|
#686
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Дошло)
void MyFinalColor(Input IN, SurfaceOutput o, inout fixed4 color) {
color.rgb = o.Albedo.rgb * UNITY_LIGHTMODEL_AMBIENT * 2;
color.a = o.Alpha;
}
Вот только не пойму зачем на 2 умножать? Почему UNITY_LIGHTMODEL_AMBIENT сразу не содержит финальное значение?
|
(Offline)
|
|
28.10.2012, 00:38
|
#687
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
я как-то опытным путем домножал на 2.6...
|
(Offline)
|
|
28.10.2012, 00:40
|
#688
|
|
Ответ: Вопросы от новичка
может оно в sRGB, а видеокарте надо RGB, тогда гамма-коррекцию надо делать
|
|
|
28.10.2012, 00:42
|
#689
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопросы от новичка
Как убрать слайдинг в стандартном Input Platform Controller?
визуально не получается. Слайдинг все равно есть. Что не есть хорошо
|
Очень нужно
|
(Offline)
|
|
28.10.2012, 00:44
|
#690
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Okay
Очень нужно
|
Код бы сюда запостил посмотреть, лень проект создавать для этого...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:06.
|