![](images/chestnut/misc/left.gif) |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
07.01.2013, 11:31
|
#946
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Мне уже смешно)
static GUIStyle _myBlueStyle public static GUIStyle MyBlueStyle { get { if(_myBlueStyle) { _myBlueStyle = new GUIStyle(); var blueTex = new Texture2D(4,4,TextureFormat.ARGB32, false); var pixels = blueTex.GetPixels(); for (int i = 0; i < pixels.Length; i++) { pixels[i] = new Color(0,0,1,0.75f); } blueTex.SetPixels(pixels); _myBlueStyle.normal.background = blueTex; } return _myBlueStyle; } }
А вот тебе пример загрузки ресурсов для редактора http://answers.unity3d.com/questions...editorgui.html
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.01.2013, 17:11
|
#947
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Вот более путевые строки
Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), normal, GUILayout.ExpandWidth(true) );
if(i == selected) FillRect(rect, Color.green);
if(GUI.Button(rect, name, normal)) {
if(selected != i) GUIUtility.keyboardControl = 0;
selected = i;
}
Все бы хорошо, но что за бред с Handles.DrawSolidRectangleWithOutline! Сразу после компиляции он еще выдает правильный цвет, но после первой перерисовки снова черным рисует. Странно, но в другом проекте работает.
Может есть где-то матрица трансформации цвета?
UPDATE:
Понял почему не работал Handles.DrawSolidRectangleWithOutline. Нужно было еще и Handles.color задать.
Впрочем все равно почему-то прямоугольник рисуется темнее, чем должен.
Вот код рисования списка
Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), style, GUILayout.ExpandWidth(true) );
if(i == selected) {
Color blue = new Color( 61/255f, 128/255f, 223/255f );
FillRect(rect, blue);
}
GUI.Label(rect, name, style);
if(Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)) {
if(selected != i) GUIUtility.keyboardControl = 0;
Event.current.Use();
selected = i;
}
|
(Offline)
|
|
07.01.2013, 19:45
|
#948
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Написал методы расширения для структуры Matrix4x4. Вроде и все работает, но матрица не изменяется.
public static void SetPosition(this Matrix4x4 matrix, Vector3 position) {
matrix.m03 = position.x;
matrix.m13 = position.y;
matrix.m23 = position.z;
}
Что-то не так?
|
(Offline)
|
|
07.01.2013, 21:42
|
#949
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
ты изменяешь матрицу, но не возвращаешь ее туда, откуда взял
|
(Offline)
|
|
08.01.2013, 13:21
|
#950
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопросы от новичка
Вопрос- можно ли при одевании текстуры на спрайт сделать ее зеркальное отражение по оси Х или У ( типа ф-ии 'flip')
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
08.01.2013, 14:23
|
#951
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Morganolla
Вопрос- можно ли при одевании текстуры на спрайт сделать ее зеркальное отражение по оси Х или У ( типа ф-ии 'flip')
|
В материале у каждой текстуры есть свой Tiling и Offset.
Если Tiling по x изменить на -1, то изображение горизонтально отразится. Если изменить по y на -1, то, соответственно, отразится вертикально.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.01.2013, 22:07
|
#952
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Доброго времени суток.
Подскажите пожалуйста, как на юнити сделать такую манипуляцию
hmap=LoadImage("Media\levelrts11.bmp") SetBuffer(ImageBuffer(hmap)) For z=0 To grid For x=0 To grid GetColor x,z map(x,z)=ColorRed() Next Next SetBuffer BackBuffer()
__________________
|
(Offline)
|
|
08.01.2013, 22:51
|
#953
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
mauNgerS, для загрузки текстуры просто сделай public Texture2D tex переменную и назначь ей значение в инспекторе. Остальное не понял.
ты изменяешь матрицу, но не возвращаешь ее туда, откуда взял
|
В смысле? Куда возвращать? После вызова метода матрица вообще не изменяется.
Вот еще проблема с Matrix4x4. Создаю матрицу Matrix4x4.Scale, делаю такую операцию rectMatrix.inverse.MultiplyPoint(mouse). И в итоге получаю вектор с NaN. Почему так? Должно же получатся такое mouse / scale.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.01.2013, 23:05
|
#954
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
public static Matrix4x4 SetPosition(this Matrix4x4 matrix, Vector3 position) {
matrix.m03 = position.x;
matrix.m13 = position.y;
matrix.m23 = position.z;
return matrix;
}
Не уверен, что нельзя использовать ref в первом параметре, но ни одного такого примера не видел. Проверять некогда.
Texture2D hmap = (Texture2D)Resources.Load("Media\levelrts11")
Texture2D map = new Texture2D();
for (int z=0; z < grid; z++)
{
for(int x=0; x < grid; x++)
{
Color c = hmap.GetPixel(x, z);
map.SetPixel(x, z, Color.red);
}
}
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо seaman за это полезное сообщение:
|
|
09.01.2013, 00:37
|
#955
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от WISHMASTER35
В смысле? Куда возвращать? После вызова метода матрица вообще не изменяется.
|
При использовании свойства ты берешь копию матрицы и передаешь ее в функцию, меняющую ее значения. Но обратно в это свойство ты ее не назначаешь. Матрица не класс, а ValueType - не ссылочный тип данных.
Т.е. в твоем случае надо
Handles.matrix = Handles.matrix.SetPosition(new Vector3(1,2,3));
вместо ожидаемого неправильного
Handles.matrix.SetPosition(new Vector3(1,2,3));
В итоге возвращаемая матрица попадает в никуда
|
(Offline)
|
|
09.01.2013, 21:52
|
#956
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
seaman, приведённый тобой код не работает, но теперь понятно куда копать.
Можете помочь с этой функцией:
Scaner=CreatePivot()
Function GetHeight#(X#,Z#) PositionEntity Scaner,X,50,Z RotateEntity Scaner,90,0,0 EntityPick Scaner,100 Return PickedY() End Function
__________________
|
(Offline)
|
|
09.01.2013, 22:19
|
#957
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
А это потому что я не понимаю, что делает Ваш код. Если в первом случае еще что-то можно попытаться догадаться, то тут совсем не понятно. Я Блиц не знаю. Посмотрел справочник - не смог понять что делает EntityPick - "Возвращает ближайшую сущность впереди указанной". Что значит "впереди"? По глобальной оси Z? Или ближе к камере? Похоже, что ближе к камере, т.к. в первом случае не имеет смысла узнавать ее координату Y - она будет та же, что у Вашего Сканера.
Лучше подождите, когда появятся спецы по Блицуи Юнити.
|
(Offline)
|
|
09.01.2013, 22:56
|
#958
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Ок прошу прощения.
Первый код:
Имеется чёрно-белая картинка. Карта высот.
Я загружаю её в память. В цикле прохожусь по каждому пикселю и записываю значение цвета в массив. (красный, зеленый или синий - значения не имеет, какой-то один)
В дальнейшем я могу использовать этот массив для построения игрового уровня.
Второй код в целом позволяет узнать высоту любого участка игрового уровня. Это нужно для того, чтобы допустим посадить лес. Чтобы деревья не висели над землёй и не проваливались, а были на земле.
__________________
|
(Offline)
|
|
09.01.2013, 22:59
|
#959
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от mauNgerS
seaman, приведённый тобой код не работает, но теперь понятно куда копать.
Можете помочь с этой функцией:
Scaner=CreatePivot()
Function GetHeight#(X#,Z#) PositionEntity Scaner,X,50,Z RotateEntity Scaner,90,0,0 EntityPick Scaner,100 Return PickedY() End Function
|
Гляди что есть: http://shgames.ru/
(спер из подписи PAXa)
|
(Offline)
|
|
09.01.2013, 23:12
|
#960
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Blitz3D to Unity3D я смотрю в первую очередь.
Но на эти темы не нашёл там ответа
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:13.
|