Unity 3d - Помощь в написании скриптов.
игнат Дата: Сб, 12 Окт 2013, 13:37 | Сообщение # 1281
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Немного не то - это я и так знаю. Вопрос в том, как указать это изображение.
Правила форума · участник GCC
Сообщение Немного не то - это я и так знаю. Вопрос в том, как указать это изображение. Автор - игнат Дата добавления - 12 Окт 2013 в 13:37
seaman Дата: Сб, 12 Окт 2013, 14:48 | Сообщение # 1282
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
imageBackground Дошло в чем проблема. Сорри. imageBackground = AssetDatabase.LoadAssetAtPath(pathToImages + "background.png", typeof(Texture)) as Texture;
Сообщение imageBackground Дошло в чем проблема. Сорри. imageBackground = AssetDatabase.LoadAssetAtPath(pathToImages + "background.png", typeof(Texture)) as Texture; Автор - seaman Дата добавления - 12 Окт 2013 в 14:48
игнат Дата: Пн, 14 Окт 2013, 17:18 | Сообщение # 1283
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Возможно, и если да, то как можно контролировать частоту вызывания функции?
Правила форума · участник GCC
Сообщение Возможно, и если да, то как можно контролировать частоту вызывания функции? Автор - игнат Дата добавления - 14 Окт 2013 в 17:18
seaman Дата: Пн, 14 Окт 2013, 22:25 | Сообщение # 1284
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Корутины же!
Сообщение Корутины же! Автор - seaman Дата добавления - 14 Окт 2013 в 22:25
игнат Дата: Пн, 14 Окт 2013, 22:50 | Сообщение # 1285
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
А по-подробней?
Правила форума · участник GCC
Сообщение А по-подробней? Автор - игнат Дата добавления - 14 Окт 2013 в 22:50
seaman Дата: Пн, 14 Окт 2013, 23:05 | Сообщение # 1286
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Код
IEnumerator Method() { while(true) { Делаем что надо yield return new WaitForSecond(период "вызова" метода); } }
Делаешь период "вызова" метода - переменной и меняешь сколько угодно. Ну и упрощение работы: Код
public void StartMethod() { StartCoroutine(Method); } public void StopMethod() { StopCoroutine("Method"); }
Сообщение Код
IEnumerator Method() { while(true) { Делаем что надо yield return new WaitForSecond(период "вызова" метода); } }
Делаешь период "вызова" метода - переменной и меняешь сколько угодно. Ну и упрощение работы: Код
public void StartMethod() { StartCoroutine(Method); } public void StopMethod() { StopCoroutine("Method"); }
Автор - seaman Дата добавления - 14 Окт 2013 в 23:05
seaman Дата: Пн, 14 Окт 2013, 23:27 | Сообщение # 1287
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Можно даже написать такой класс: Код
using System; using System.Collections; using UnityEngine; public class Timer : MonoBehaviour { private Action __act; private bool __enable; private float __period; private IEnumerator Method() { while (__enable) { __act(); yield return new WaitForSeconds(__period); } } public void StartTimer(float period, Action act) { __period = period; __act = act; __enable = true; StartCoroutine(Method()); } public void StopTimer() { __enable = false; } public float Period { get { return __period; } set { __period = value; } } }
Бросаешь на пустышку. В нужном месте находишь. Запускаешь вызовом StartTimer, которому передаешь нужный период вызова и функцию, которую нужно вызывать. В данном случае функция должна быть типа: void Foo(){...} Если нужно в нее предавать параметры - нужно Action менять на Action<>...
Сообщение Можно даже написать такой класс: Код
using System; using System.Collections; using UnityEngine; public class Timer : MonoBehaviour { private Action __act; private bool __enable; private float __period; private IEnumerator Method() { while (__enable) { __act(); yield return new WaitForSeconds(__period); } } public void StartTimer(float period, Action act) { __period = period; __act = act; __enable = true; StartCoroutine(Method()); } public void StopTimer() { __enable = false; } public float Period { get { return __period; } set { __period = value; } } }
Бросаешь на пустышку. В нужном месте находишь. Запускаешь вызовом StartTimer, которому передаешь нужный период вызова и функцию, которую нужно вызывать. В данном случае функция должна быть типа: void Foo(){...} Если нужно в нее предавать параметры - нужно Action менять на Action<>... Автор - seaman Дата добавления - 14 Окт 2013 в 23:27
Hunjeth Дата: Вт, 15 Окт 2013, 00:11 | Сообщение # 1288
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
Цитата
Возможно, и если да, то как можно контролировать частоту вызывания функции?
вот мне тоже интересно, заметил что в metro2033 чем дальше игрок от объекта тем больше время до след апдейта
Сообщение отредактировал Hunjeth - Вт, 15 Окт 2013, 03:01
Сообщение Цитата
Возможно, и если да, то как можно контролировать частоту вызывания функции?
вот мне тоже интересно, заметил что в metro2033 чем дальше игрок от объекта тем больше время до след апдейтаАвтор - Hunjeth Дата добавления - 15 Окт 2013 в 00:11
Tenb2012 Дата: Чт, 07 Ноя 2013, 21:31 | Сообщение # 1289
Сообщений: 6
Награды:
0
Репутация:
0
Статус: Offline
Ребята может кто подскажет как отлавливать устройство на iOS, вот вариант отлавливать разрешение, но тут дилемма iPad 3 - iPad 4 и Air имеют одно и тоже разрешение. А вот производительность у них разная. Код
rez=Screen.currentResolution.width + "x" + Screen.currentResolution.height; if(rez=="1600x1200"){ Screen.SetResolution(1280, 800, true, 30);
Сообщение Ребята может кто подскажет как отлавливать устройство на iOS, вот вариант отлавливать разрешение, но тут дилемма iPad 3 - iPad 4 и Air имеют одно и тоже разрешение. А вот производительность у них разная. Код
rez=Screen.currentResolution.width + "x" + Screen.currentResolution.height; if(rez=="1600x1200"){ Screen.SetResolution(1280, 800, true, 30);
Автор - Tenb2012 Дата добавления - 07 Ноя 2013 в 21:31
игнат Дата: Чт, 07 Ноя 2013, 22:20 | Сообщение # 1290
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Посмотреть другие характеристики? C# может всё.
Правила форума · участник GCC
Сообщение Посмотреть другие характеристики? C# может всё. Автор - игнат Дата добавления - 07 Ноя 2013 в 22:20
Tenb2012 Дата: Чт, 07 Ноя 2013, 22:48 | Сообщение # 1291
Сообщений: 6
Награды:
0
Репутация:
0
Статус: Offline
Цитата игнат (
)
Посмотреть другие характеристики? C# может всё.
Может сылочку подкините? Где смотреть, буду благодарен.
Сообщение Цитата игнат (
)
Посмотреть другие характеристики? C# может всё.
Может сылочку подкините? Где смотреть, буду благодарен.Автор - Tenb2012 Дата добавления - 07 Ноя 2013 в 22:48
игнат Дата: Чт, 07 Ноя 2013, 23:02 | Сообщение # 1292
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Код
SystemInfo.operatingSystem; SystemInfo.graphicsDeviceName; SystemInfo.graphicsDeviceVersion;
Ссылка - тык .
Правила форума · участник GCC
Сообщение Код
SystemInfo.operatingSystem; SystemInfo.graphicsDeviceName; SystemInfo.graphicsDeviceVersion;
Ссылка - тык .Автор - игнат Дата добавления - 07 Ноя 2013 в 23:02
commandoby Дата: Сб, 16 Ноя 2013, 17:21 | Сообщение # 1293
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
Я открываю файл, который находится в папке с игрой так: Код
var readSave = new File.OpenText("save.dob");
Как открыть файл, находящийся не в папке с игрой, а снаружи её (рядом с ней) ?
Блог.
Сообщение Я открываю файл, который находится в папке с игрой так: Код
var readSave = new File.OpenText("save.dob");
Как открыть файл, находящийся не в папке с игрой, а снаружи её (рядом с ней) ? Автор - commandoby Дата добавления - 16 Ноя 2013 в 17:21
Левша Дата: Сб, 16 Ноя 2013, 19:38 | Сообщение # 1294
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Методом WWW
X.cor.R (Prologue)
Сообщение Методом WWW Автор - Левша Дата добавления - 16 Ноя 2013 в 19:38
commandoby Дата: Вс, 17 Ноя 2013, 11:57 | Сообщение # 1295
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
Цитата Левша (
)
Методом WWW
Я раньше думал, что этот метод для чтения из интернета. Сейчас погуглю.
Блог.
Сообщение Цитата Левша (
)
Методом WWW
Я раньше думал, что этот метод для чтения из интернета. Сейчас погуглю.Автор - commandoby Дата добавления - 17 Ноя 2013 в 11:57
Левша Дата: Вс, 17 Ноя 2013, 14:35 | Сообщение # 1296
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата commandoby (
)
для чтения из интернета.
Не только, он и с дисков тоже умеет читать.
X.cor.R (Prologue)
Сообщение Цитата commandoby (
)
для чтения из интернета.
Не только, он и с дисков тоже умеет читать.Автор - Левша Дата добавления - 17 Ноя 2013 в 14:35
игнат Дата: Вт, 19 Ноя 2013, 18:34 | Сообщение # 1297
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
Вопрос, касаясь этой темы: есть метод Application.LoadLevelAsync , у него есть переменная isDone , но вот как можно не автоматически загружать сцену после окончания метода? Надо сделать так, чтобы сцена загрузилась, но не включалась.
Правила форума · участник GCC
Сообщение Вопрос, касаясь этой темы: есть метод Application.LoadLevelAsync , у него есть переменная isDone , но вот как можно не автоматически загружать сцену после окончания метода? Надо сделать так, чтобы сцена загрузилась, но не включалась. Автор - игнат Дата добавления - 19 Ноя 2013 в 18:34
commandoby Дата: Вт, 26 Ноя 2013, 19:00 | Сообщение # 1298
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
Как найти наименьшее значение массива в JavaScript? Mathf.Min подходит только для C#.Добавлено (26 Ноя 2013, 19:00) --------------------------------------------- В принципе можно сделать это при помощи цикла (перебрать весь массив), но на циклы юня странно реагирует, поэтому ищу другие способы.
Блог.
Сообщение Как найти наименьшее значение массива в JavaScript? Mathf.Min подходит только для C#.Добавлено (26 Ноя 2013, 19:00) --------------------------------------------- В принципе можно сделать это при помощи цикла (перебрать весь массив), но на циклы юня странно реагирует, поэтому ищу другие способы.
Автор - commandoby Дата добавления - 26 Ноя 2013 в 19:00
seaman Дата: Вт, 26 Ноя 2013, 20:16 | Сообщение # 1299
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Цитата
на циклы юня странно реагирует
Нормально она реагирует. Никаких проблем. Как Вы думаете сделан Mathf.Min? Код
public static float Min(params float[] values) { int length = values.Length; if (length == 0) { return 0f; } float num2 = values[0]; for (int i = 1; i < length; i++) { if (values[i] < num2) { num2 = values[i]; } } return num2; }
Цикл видите? И никаких проблем. Цитата
Mathf.Min подходит только для C#.
Я конечно JS не знаю. Однако не вижу ничего, что помешало бы работать ему и в JS.
Сообщение Цитата
на циклы юня странно реагирует
Нормально она реагирует. Никаких проблем. Как Вы думаете сделан Mathf.Min? Код
public static float Min(params float[] values) { int length = values.Length; if (length == 0) { return 0f; } float num2 = values[0]; for (int i = 1; i < length; i++) { if (values[i] < num2) { num2 = values[i]; } } return num2; }
Цикл видите? И никаких проблем. Цитата
Mathf.Min подходит только для C#.
Я конечно JS не знаю. Однако не вижу ничего, что помешало бы работать ему и в JS.Автор - seaman Дата добавления - 26 Ноя 2013 в 20:16
commandoby Дата: Ср, 27 Ноя 2013, 17:42 | Сообщение # 1300
Unity 3D Free
Сообщений: 836
Награды:
3
Репутация:
211
Статус: Offline
Вот кусок кода, заполняющий массив: Код
distanceDown.clear(); for(var xDown = 0; xDown < 5; xDown++) { for(var yDown = 0; yDown < 5; yDown++) { var hitDown : RaycastHit; Physics.Raycast (transform.position+Vector3(pos[xDown],0.29,pos[yDown]), Vector3.down, hitDown, 10.0); distanceDown[distanceDown.length] = Vector3.Distance(transform.position+Vector3(pos[xDown],0.29,pos[yDown]), hitDown.point); }}
Вот цикл, которым я перебирал массив: Код
for(var zDown = 0; zDown < 25; zDown++) { if (distanceDown[zDown]<0.598&&distanceDown[zDown]<xDURL) { xDURL = distanceDown[zDown]; } } if (xDURL<0.598) { positionDULR[positionDULR.lenght] = xDURL; positionDULRVector3[positionDULR.lenght] = Vector3(0,1,0); }
Если я его запускаю, то перестаёт работать правильно предыдущий цикл (пишет, что равно 0 или вообще нет...). А на Mathf.Min юнити тоже выдаёт ошибку, только не помню какую.
Блог.
Сообщение Вот кусок кода, заполняющий массив: Код
distanceDown.clear(); for(var xDown = 0; xDown < 5; xDown++) { for(var yDown = 0; yDown < 5; yDown++) { var hitDown : RaycastHit; Physics.Raycast (transform.position+Vector3(pos[xDown],0.29,pos[yDown]), Vector3.down, hitDown, 10.0); distanceDown[distanceDown.length] = Vector3.Distance(transform.position+Vector3(pos[xDown],0.29,pos[yDown]), hitDown.point); }}
Вот цикл, которым я перебирал массив: Код
for(var zDown = 0; zDown < 25; zDown++) { if (distanceDown[zDown]<0.598&&distanceDown[zDown]<xDURL) { xDURL = distanceDown[zDown]; } } if (xDURL<0.598) { positionDULR[positionDULR.lenght] = xDURL; positionDULRVector3[positionDULR.lenght] = Vector3(0,1,0); }
Если я его запускаю, то перестаёт работать правильно предыдущий цикл (пишет, что равно 0 или вообще нет...). А на Mathf.Min юнити тоже выдаёт ошибку, только не помню какую. Автор - commandoby Дата добавления - 27 Ноя 2013 в 17:42