Unity3d-cкриптинг
seaman Дата: Ср, 11 Июл 2012, 18:01 | Сообщение # 61
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Code
class MyGUI : MonoBehaviour { bool enbl; void OnGUI() { if(Input.GetKeyUp(KeyCode.I)) enbl = !enbl; if(!enbl) return; //Выводим ГУИ } }
Сообщение Code
class MyGUI : MonoBehaviour { bool enbl; void OnGUI() { if(Input.GetKeyUp(KeyCode.I)) enbl = !enbl; if(!enbl) return; //Выводим ГУИ } }
Автор - seaman Дата добавления - 11 Июл 2012 в 18:01
Николай Дата: Ср, 11 Июл 2012, 20:40 | Сообщение # 62
Сообщений: 385
Награды:
5
Репутация:
78
Статус: Offline
Левша , я так хочу))) seaman , спасибо!Добавлено (11.07.2012, 20:40) ---------------------------------------------Левша , а как бы это выглядело в случае со слоями?
Сообщение Левша , я так хочу))) seaman , спасибо!Добавлено (11.07.2012, 20:40) ---------------------------------------------Левша , а как бы это выглядело в случае со слоями?
Автор - Николай Дата добавления - 11 Июл 2012 в 20:40
Левша Дата: Ср, 11 Июл 2012, 22:36 | Сообщение # 63
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Quote (Колямба )
как бы это выглядело в случае со слоями?
В твоем случае (on/of) не актуально, а вот в многоЭкранном меню - оч. даже практично. Code
var myCurentMask : LayerMask; var kamera : Camera; kamera.cullingMask = myCurentMask;
X.cor.R (Prologue)
Сообщение Quote (Колямба )
как бы это выглядело в случае со слоями?
В твоем случае (on/of) не актуально, а вот в многоЭкранном меню - оч. даже практично. Code
var myCurentMask : LayerMask; var kamera : Camera; kamera.cullingMask = myCurentMask;
Автор - Левша Дата добавления - 11 Июл 2012 в 22:36
Николай Дата: Чт, 12 Июл 2012, 23:37 | Сообщение # 64
Сообщений: 385
Награды:
5
Репутация:
78
Статус: Offline
Quote
В твоем случае (on/of) не актуально, а вот в многоЭкранном меню - оч. даже практично.
Левша , да. Наверное лучше буду использовать данный способ!
Сообщение Quote
В твоем случае (on/of) не актуально, а вот в многоЭкранном меню - оч. даже практично.
Левша , да. Наверное лучше буду использовать данный способ!Автор - Николай Дата добавления - 12 Июл 2012 в 23:37
Kaspersky Дата: Пт, 13 Июл 2012, 08:27 | Сообщение # 65
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Quote (seaman )
Вопросы весьма странные.
Потому что я новичек в unity.Quote (seaman )
Зачем Вам вообще что-то сохранять, если Вы не знаете как с уровня на уровень перейти? Посмотрите на название функции - LevelUp.
Я использую Code
Application.LoadLevel ();
Quote (seaman )
Вам нужно не игру писать, а с чего-то попроще начинать.
3 года назад, я делал моды в ГЭКК (Инструмент для Fallout 3), за 4 месяца я выучил все аспекты ГЭКК'а, потом я перешел на Fps Creator, далее у меня был UDK, но он мне не понравился, так что теперь я решил остановится на Unity. И вообще причем в коде Code
int level; ... void LevelUp() { level++; } ...
если нужны только Code
PlayerPrefs.SetInt("Уровень", level); Application.LoadLevel(PlayerPrefs.GetInt("Уровень"));
или я опять туплю?(так как он ругается на level)
Сообщение отредактировал Kaspersky - Пт, 13 Июл 2012, 08:31
Сообщение Quote (seaman )
Вопросы весьма странные.
Потому что я новичек в unity.Quote (seaman )
Зачем Вам вообще что-то сохранять, если Вы не знаете как с уровня на уровень перейти? Посмотрите на название функции - LevelUp.
Я использую Code
Application.LoadLevel ();
Quote (seaman )
Вам нужно не игру писать, а с чего-то попроще начинать.
3 года назад, я делал моды в ГЭКК (Инструмент для Fallout 3), за 4 месяца я выучил все аспекты ГЭКК'а, потом я перешел на Fps Creator, далее у меня был UDK, но он мне не понравился, так что теперь я решил остановится на Unity. И вообще причем в коде Code
int level; ... void LevelUp() { level++; } ...
если нужны только Code
PlayerPrefs.SetInt("Уровень", level); Application.LoadLevel(PlayerPrefs.GetInt("Уровень"));
или я опять туплю?(так как он ругается на level)Автор - Kaspersky Дата добавления - 13 Июл 2012 в 08:27
Николай Дата: Пт, 13 Июл 2012, 10:54 | Сообщение # 66
Сообщений: 385
Награды:
5
Репутация:
78
Статус: Offline
Quote
PlayerPrefs.SetInt("Уровень", level); Application.LoadLevel(PlayerPrefs.GetInt("Уровень")); или я опять туплю?(так как он ругается на level)
Может быть следовало указывать под ´level´ его порядок?
Сообщение Quote
PlayerPrefs.SetInt("Уровень", level); Application.LoadLevel(PlayerPrefs.GetInt("Уровень")); или я опять туплю?(так как он ругается на level)
Может быть следовало указывать под ´level´ его порядок?Автор - Николай Дата добавления - 13 Июл 2012 в 10:54
seaman Дата: Пт, 13 Июл 2012, 12:04 | Сообщение # 67
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Quote
или я опять туплю?(так как он ругается на level)
В общем разговор ни о чем. Вы не знаете что такое переменная, как ее определить, как ее установить. Что уж дальше то говорить.
Сообщение Quote
или я опять туплю?(так как он ругается на level)
В общем разговор ни о чем. Вы не знаете что такое переменная, как ее определить, как ее установить. Что уж дальше то говорить.Автор - seaman Дата добавления - 13 Июл 2012 в 12:04
Hunjeth Дата: Пт, 13 Июл 2012, 14:40 | Сообщение # 68
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
static function SetInt (key : String, value : int) : void 2 значение только int Code
PlayerPrefs.SetInt("levelName", 1);
и тут посмотри тоже http://docs.unity3d.com/Documen....erPrefs
Сообщение отредактировал Hunjeth - Пт, 13 Июл 2012, 14:45
Kaspersky Дата: Пт, 13 Июл 2012, 15:48 | Сообщение # 69
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Hunjeth , Code
PlayerPrefs.SetInt("levelName", 1);
кидаю на кнопку "Выход" и у меня будет любой номер уровеня(сцены) сохраняться или только определенный?
Сообщение отредактировал Kaspersky - Пт, 13 Июл 2012, 15:50
Сообщение Hunjeth , Code
PlayerPrefs.SetInt("levelName", 1);
кидаю на кнопку "Выход" и у меня будет любой номер уровеня(сцены) сохраняться или только определенный?Автор - Kaspersky Дата добавления - 13 Июл 2012 в 15:48
seaman Дата: Пт, 13 Июл 2012, 16:57 | Сообщение # 70
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Где Вы в строчке "PlayerPrefs.SetInt("levelName", 1);" видите "любой номер сцены? Вы что считаете, что Юнити Ваши мысли читает? Откуда он сможет узнать другой номер, если Вы ему даете "1"! Подумайте немного! Ну зачем я Вам писал "PlayerPrefs.SetInt("Уровень", level);"? Для чего тут переменная, называемая level? ЗЫ: Еще раз - зачем Вам сохранять номер уровня на котором игрок, если Вы совершенно не понимаете как задать этот уровень?
Сообщение Где Вы в строчке "PlayerPrefs.SetInt("levelName", 1);" видите "любой номер сцены? Вы что считаете, что Юнити Ваши мысли читает? Откуда он сможет узнать другой номер, если Вы ему даете "1"! Подумайте немного! Ну зачем я Вам писал "PlayerPrefs.SetInt("Уровень", level);"? Для чего тут переменная, называемая level? ЗЫ: Еще раз - зачем Вам сохранять номер уровня на котором игрок, если Вы совершенно не понимаете как задать этот уровень? Автор - seaman Дата добавления - 13 Июл 2012 в 16:57
Николай Дата: Пт, 13 Июл 2012, 20:10 | Сообщение # 71
Сообщений: 385
Награды:
5
Репутация:
78
Статус: Offline
Kaspersky , при компилировании проекта вами же добавляются, а также упорядочиваются сцены. Собственно какое значение в функции примет переменная, та сцена под тем же номером и будет определена. Собственно... кому я всё это говорю...точнее мы все твердим?
Сообщение Kaspersky , при компилировании проекта вами же добавляются, а также упорядочиваются сцены. Собственно какое значение в функции примет переменная, та сцена под тем же номером и будет определена. Собственно... кому я всё это говорю...точнее мы все твердим?Автор - Николай Дата добавления - 13 Июл 2012 в 20:10
Kaspersky Дата: Сб, 14 Июл 2012, 12:22 | Сообщение # 72
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
seaman , Колямба , Cвершилось чудо! Все заработало!
Сообщение seaman , Колямба , Cвершилось чудо! Все заработало!Автор - Kaspersky Дата добавления - 14 Июл 2012 в 12:22
TheReaper Дата: Пт, 27 Июл 2012, 01:06 | Сообщение # 73
Meet the revolution
Сообщений: 2738
Награды:
23
Репутация:
679
Статус: Offline
Смотрите, скрипт всем известного, но уже не многим Скептика . Я в скриптинге разбираюсь мало, а если бы даже разбирался, то вряд ли бы знал больше, чем Вова. Проблема состоит в том, что если таких скриптов в сцене будет несколько, т.е. висеть на множестве объектов, то fps снизится. Эта система простая, поэтому на другую переходить не хочу. Может быть, есть ошибка, а если нет, то просто интересно из-за чего проблема. Скрипт, который вешается на объект
Code
//--------------------------------------------------- // Working Waypoint //--------------------------------------------------- var Waypoint : Transform[]; var speed : float = 4; private var currentWaypoint : int; var loop : boolean = true; var distance = 5; private var other : Transform; function Awake() { Waypoint[0] = transform; } function Start (){ other = GameObject.FindWithTag ("Player").transform; } function Update (){ var dist : int = Vector3.Distance(other.position, transform.position); if(currentWaypoint < Waypoint.length) { var target : Vector3 = Waypoint[currentWaypoint].position; var moveDirection : Vector3 = target - transform.position; var velocity = rigidbody.velocity; if(moveDirection.magnitude < 1){ currentWaypoint++; } else { velocity = moveDirection.normalized * speed; } } else { if(loop) { currentWaypoint = 0; } else { velocity = Vector3.zero; } } rigidbody.velocity = velocity; //transform.LookAt(target);//Facing target, by see the Arrow facing if (dist > distance) { rigidbody.velocity = velocity; transform.LookAt(target); animation.CrossFade("walk"); } if (dist <= distance) { transform.LookAt(other); rigidbody.velocity = Vector3.zero; animation.CrossFade("idle"); } //if (dist < 7) //{ // transform.LookAt(other); // velocity = moveDirection.normalized * speed * 3; // rigidbody.velocity = velocity; // animation.CrossFade("run"); //} }
Скрипт, который вешается на вейпоинте
Code
/* var text : Texture; function OnDrawGizmos () { Gizmos.DrawIcon(transform.position,""); } */ var waypoints : Transform[]; function OnDrawGizmos(){ Gizmos.color = Color.white; for(var i : int = 0; i< waypoints.Length;i++) { var pos : Vector3 = waypoints[i].position; if(i>0) { var prev : Vector3 = waypoints[i-1].position; Gizmos.DrawLine(prev,pos); } } }
Сообщение Смотрите, скрипт всем известного, но уже не многим Скептика . Я в скриптинге разбираюсь мало, а если бы даже разбирался, то вряд ли бы знал больше, чем Вова. Проблема состоит в том, что если таких скриптов в сцене будет несколько, т.е. висеть на множестве объектов, то fps снизится. Эта система простая, поэтому на другую переходить не хочу. Может быть, есть ошибка, а если нет, то просто интересно из-за чего проблема. Скрипт, который вешается на объект
Code
//--------------------------------------------------- // Working Waypoint //--------------------------------------------------- var Waypoint : Transform[]; var speed : float = 4; private var currentWaypoint : int; var loop : boolean = true; var distance = 5; private var other : Transform; function Awake() { Waypoint[0] = transform; } function Start (){ other = GameObject.FindWithTag ("Player").transform; } function Update (){ var dist : int = Vector3.Distance(other.position, transform.position); if(currentWaypoint < Waypoint.length) { var target : Vector3 = Waypoint[currentWaypoint].position; var moveDirection : Vector3 = target - transform.position; var velocity = rigidbody.velocity; if(moveDirection.magnitude < 1){ currentWaypoint++; } else { velocity = moveDirection.normalized * speed; } } else { if(loop) { currentWaypoint = 0; } else { velocity = Vector3.zero; } } rigidbody.velocity = velocity; //transform.LookAt(target);//Facing target, by see the Arrow facing if (dist > distance) { rigidbody.velocity = velocity; transform.LookAt(target); animation.CrossFade("walk"); } if (dist <= distance) { transform.LookAt(other); rigidbody.velocity = Vector3.zero; animation.CrossFade("idle"); } //if (dist < 7) //{ // transform.LookAt(other); // velocity = moveDirection.normalized * speed * 3; // rigidbody.velocity = velocity; // animation.CrossFade("run"); //} }
Скрипт, который вешается на вейпоинте
Code
/* var text : Texture; function OnDrawGizmos () { Gizmos.DrawIcon(transform.position,""); } */ var waypoints : Transform[]; function OnDrawGizmos(){ Gizmos.color = Color.white; for(var i : int = 0; i< waypoints.Length;i++) { var pos : Vector3 = waypoints[i].position; if(i>0) { var prev : Vector3 = waypoints[i-1].position; Gizmos.DrawLine(prev,pos); } } }
Автор - TheReaper Дата добавления - 27 Июл 2012 в 01:06
Левша Дата: Пт, 27 Июл 2012, 04:37 | Сообщение # 74
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Quote (TheReaper )
просто интересно из-за чего проблема.
Думаю дело в rigidBody , это не самый производительный компонент как ты понимаешь. Размножение обьектов с этим компонентом на сцене, а так же скриптовое управление многими обьектами с этим компонентом одновременно и дает спад fps . ИМХО.
X.cor.R (Prologue)
Сообщение Quote (TheReaper )
просто интересно из-за чего проблема.
Думаю дело в rigidBody , это не самый производительный компонент как ты понимаешь. Размножение обьектов с этим компонентом на сцене, а так же скриптовое управление многими обьектами с этим компонентом одновременно и дает спад fps . ИМХО.Автор - Левша Дата добавления - 27 Июл 2012 в 04:37
TheReaper Дата: Сб, 28 Июл 2012, 19:35 | Сообщение # 75
Meet the revolution
Сообщений: 2738
Награды:
23
Репутация:
679
Статус: Offline
Quote (Левша )
Размножение обьектов с этим компонентом на сцене, а так же скриптовое управление многими обьектами с этим компонентом одновременно и дает спад fps
Соглашусь. Quote (Левша )
Думаю дело в rigidBody
А избавиться от этого в этом случае никак?
Сообщение Quote (Левша )
Размножение обьектов с этим компонентом на сцене, а так же скриптовое управление многими обьектами с этим компонентом одновременно и дает спад fps
Соглашусь. Quote (Левша )
Думаю дело в rigidBody
А избавиться от этого в этом случае никак?Автор - TheReaper Дата добавления - 28 Июл 2012 в 19:35
Левша Дата: Сб, 28 Июл 2012, 19:49 | Сообщение # 76
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Quote (TheReaper )
избавиться от этого в этом случае никак?
Надо знать что ты делаешь, чтоб что то советовать...
X.cor.R (Prologue)
Сообщение Quote (TheReaper )
избавиться от этого в этом случае никак?
Надо знать что ты делаешь, чтоб что то советовать...Автор - Левша Дата добавления - 28 Июл 2012 в 19:49
TheReaper Дата: Вс, 29 Июл 2012, 17:52 | Сообщение # 77
Meet the revolution
Сообщений: 2738
Награды:
23
Репутация:
679
Статус: Offline
Quote (Левша )
Надо знать что ты делаешь, чтоб что то советовать...
Использую систему для перемещения транспорта по вейпоинтам.
Сообщение Quote (Левша )
Надо знать что ты делаешь, чтоб что то советовать...
Использую систему для перемещения транспорта по вейпоинтам.Автор - TheReaper Дата добавления - 29 Июл 2012 в 17:52
iluxa Дата: Вс, 29 Июл 2012, 18:04 | Сообщение # 78
Сообщений: 71
Награды:
0
Репутация:
12
Статус: Offline
Ребят, есть проблема. Пытаюсь изменить переменную родительского объекта таким скриптом: Code
var vehicles : GameObject[]; private var i : int = 0; function OnTriggerEnter(theCollider : Collider) { //Добавление нового вагона Instantiate (vehicles [Random.Range(0, vehicles.Length-1) ], Vector3(transform.position.x + 5 - transform.localPosition.x, transform.position.y - transform.localPosition.y, transform.position.z - transform.localPosition.z), Quaternion.identity); i++; //Изменение VagonState if (transform.parent.VagonState == 1) { [b] transform.parent.VagonState++;[/b] } }
Этот скрипт прикреплен на триггер, прикрепленный к главному объекту, т.е. получается вот так: Объект |-Триггер На сам объект прицеплен простой скрипт, просто содержащий переменную: Code
#pragma strict [b] static var VagonState : int = 0; [/b] function Start () { } function Update () { }
В результате выдает ошибку на четвертой строке верхнего скрипта, т.е. там, где как раз изменяется переменная родительского объекта. Вычитал, что чтобы избавиться от проблемы нужно дописать к объявлению переменной "static", все равно не помогает.
Сообщение Ребят, есть проблема. Пытаюсь изменить переменную родительского объекта таким скриптом: Code
var vehicles : GameObject[]; private var i : int = 0; function OnTriggerEnter(theCollider : Collider) { //Добавление нового вагона Instantiate (vehicles [Random.Range(0, vehicles.Length-1) ], Vector3(transform.position.x + 5 - transform.localPosition.x, transform.position.y - transform.localPosition.y, transform.position.z - transform.localPosition.z), Quaternion.identity); i++; //Изменение VagonState if (transform.parent.VagonState == 1) { [b] transform.parent.VagonState++;[/b] } }
Этот скрипт прикреплен на триггер, прикрепленный к главному объекту, т.е. получается вот так: Объект |-Триггер На сам объект прицеплен простой скрипт, просто содержащий переменную: Code
#pragma strict [b] static var VagonState : int = 0; [/b] function Start () { } function Update () { }
В результате выдает ошибку на четвертой строке верхнего скрипта, т.е. там, где как раз изменяется переменная родительского объекта. Вычитал, что чтобы избавиться от проблемы нужно дописать к объявлению переменной "static", все равно не помогает. Автор - iluxa Дата добавления - 29 Июл 2012 в 18:04
Левша Дата: Вс, 29 Июл 2012, 19:13 | Сообщение # 79
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Нельзя обращаться к переменной через transform.parent. ... Если переменная статик, то ИмяСкрипта.имяПеременной - ИмяСкрипта.VagonState В твоем случае скрипты со статической переменной размножаються, учти что значение будет меняться во всех скритах. Поэтому тут видимо не целесообразно применение статик переменных...
X.cor.R (Prologue)
Сообщение Нельзя обращаться к переменной через transform.parent. ... Если переменная статик, то ИмяСкрипта.имяПеременной - ИмяСкрипта.VagonState В твоем случае скрипты со статической переменной размножаються, учти что значение будет меняться во всех скритах. Поэтому тут видимо не целесообразно применение статик переменных... Автор - Левша Дата добавления - 29 Июл 2012 в 19:13
iluxa Дата: Вс, 29 Июл 2012, 23:20 | Сообщение # 80
Сообщений: 71
Награды:
0
Репутация:
12
Статус: Offline
Quote (Левша )
Нельзя обращаться к переменной через transform.parent.... Если переменная статик, то ИмяСкрипта.имяПеременной - ИмяСкрипта.VagonState В твоем случае скрипты со статической переменной размножаються, учти что значение будет меняться во всех скритах. Поэтому тут видимо не целесообразно применение статик переменных...
На самом деле мне все равно, какой именно тип будет у переменной. Если static не нужен, как сделать, чтобы работало без него и не выдавало "Expression 'self.transform.parent.VagonState' cannot be assigned to" ?
Сообщение Quote (Левша )
Нельзя обращаться к переменной через transform.parent.... Если переменная статик, то ИмяСкрипта.имяПеременной - ИмяСкрипта.VagonState В твоем случае скрипты со статической переменной размножаються, учти что значение будет меняться во всех скритах. Поэтому тут видимо не целесообразно применение статик переменных...
На самом деле мне все равно, какой именно тип будет у переменной. Если static не нужен, как сделать, чтобы работало без него и не выдавало "Expression 'self.transform.parent.VagonState' cannot be assigned to" ?Автор - iluxa Дата добавления - 29 Июл 2012 в 23:20