|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
12.06.2015, 21:46
|
#2176
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от ARA
|
Не помогло
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.06.2015, 22:05
|
#2177
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.06.2015, 22:46
|
#2178
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от ILonion
|
Ясно
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
15.06.2015, 02:10
|
#2179
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Доброго времени!
Подскажите, пожалуйста, о спрайтах:
В сцене должно быть множество простых объектов с картинкой постоянно смотрящей в камеру.
Основной вопрос в максимально "легковесном" решении.
То ли реализовать через particle system с одной долгоиграющей частицей-картинкой для каждого объекта;
или через sprite renderer, но со скриптом .LookAt()...
или еще какой-то способ имеется ?
самый шустрый... как быть?
|
(Offline)
|
|
15.06.2015, 07:03
|
#2180
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.06.2015, 18:29
|
#2181
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Да, супер, уже работает. Большое спасибо за ссылку!
Прикрутил к нему альфа-смешивание.
Если кому-то понадобится такой билборд-шейдер:
Shader "Cg shader for billboards"
{
Properties {
_MainTex ("Texture Image", 2D) = "white" {}
}
SubShader {
Tags {"Queue" = "Transparent"}
Pass {
ZWrite Off // don't write to depth buffer
// in order not to occlude other objects
Blend SrcAlpha OneMinusSrcAlpha
// blend based on the fragment's alpha value
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// User-specified uniforms
uniform sampler2D _MainTex;
struct vertexInput {
float4 vertex : POSITION;
float4 tex : TEXCOORD0;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float4 tex : TEXCOORD0;
};
vertexOutput vert(vertexInput input)
{
vertexOutput output;
output.tex = input.tex;
output.pos = mul(UNITY_MATRIX_P, mul(UNITY_MATRIX_MV, float4(0.0, 0.0, 0.0, 1.0)) - float4(input.vertex.x, input.vertex.z, 0.0, 0.0));
return output;
}
float4 frag(vertexOutput input) : COLOR
{
return tex2D(_MainTex, float2(input.tex.xy));
}
ENDCG
}
}
}
|
(Offline)
|
|
16.06.2015, 23:46
|
#2182
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Доброго времени!
Скажите, самый быстрый способ получить на лету трансформ для дочерних это transform.GetChild(int) ?
а GameObject.Find (если для дочерних) самый медленный?
|
(Offline)
|
|
17.06.2015, 07:04
|
#2183
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
А что, чилды все время меняются? Если получить трансформ в Start или Awake, то разницы особо нет. А в целом по индексу быстрее. А можно у скрипта создать поле Transform и назначить туда искомый трансформ заранее. Тогда ничего искать не надо.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.06.2015, 12:12
|
#2184
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Да, постоянно instantiate родителей, поэтому дочерних приходится выуживать каким-либо поиском.
|
(Offline)
|
|
21.06.2015, 00:55
|
#2185
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Такой вопрос:
В блитце имелась возможность перебирать динамический список через
for a.list = each list, и удалять элемент delete a внутри этого же цикла. Работало вполне вменяемо.
По C# сказано, что foreach в таком же духе лучше не использовать. Действовать через for.
Получается конструкция:
for (int k0 = 0; k0 <= List.Count; k0++) { //... List.RemoveAt(k0); //... }
Вопрос: правильно ли так делать в си шарп (нужен ремув по индексу) ? Смущает то, что указано здесь: "..оставшиеся элементы в списке нумеруются заново, чтобы заменить удаленный элемент". Пропусков не будет в текущем цикле? %
|
(Offline)
|
|
21.06.2015, 01:19
|
#2186
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
В блице связанный список - LinkedList<T> в шарпе.
С обычными списками я обычно делаю так: если надо что-то удалять из списка, то я обрабатываю список начиная с последнего элемента, потому что RemoveAt при переборе списка вперед пропустит следующий не обработанный элемент (тут можно конечно переменную цикла уменьшить). Либо я записываю элементы, которые надо удалить в другой список не изменяя текущий, а потом удаляю через Remove в дополнительном цикле по списку с удаляемыми элементами.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.06.2015, 02:58
|
#2187
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Понятно, спасибо.
А LinkedList<T> не поддерживает циклы для изменения.
UPD:
т.е. только один node удаляет и больше ничего не делает:
using UnityEngine; using System.Collections; using System.Collections.Generic; public class ts : MonoBehaviour { public LinkedList<field_class> A_list = new LinkedList<field_class>(); void Start () { for (int k = 0; k <= 9; k++) { field_class aa = new field_class{}; A_list.AddLast (aa); aa.aaa = k; } LinkedListNode<field_class> node; for (node = A_list.First; node != null; node = node.Next) { Debug.Log(">>"); A_list.Remove(node); } for (node = A_list.First; node != null; node = node.Next) { Debug.Log(node.Value.aaa); } } } public class field_class { public int aaa; }
UPD2:
не, ошибся. можно удалять в цикле:
LinkedListNode<field_class> node = A_list.First; while (node != null) { LinkedListNode<field_class> node2 = node.Next; A_list.Remove(node); node = node2; }
Последний раз редактировалось ILonion, 21.06.2015 в 04:20.
|
(Offline)
|
|
28.06.2015, 16:24
|
#2188
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Подскажите, пожалуйста, правильно ли я понимаю, что быстрее и правильнее делать new, чем .Clear для массивов и списков (выполняется каждый кадр) ?
|
(Offline)
|
|
28.06.2015, 16:38
|
#2189
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
new выделяет память, Clear нет. Так что правильнее Clear для списков. Для массивов нет такого метода, там только пересоздание.
|
(Offline)
|
|
28.06.2015, 16:51
|
#2190
|
ПроЭктировщик
Регистрация: 02.10.2014
Сообщений: 102
Написано 5 полезных сообщений (для 25 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
new выделяет память, Clear нет. Так что правильнее Clear для списков. Для массивов нет такого метода, там только пересоздание.
|
как? а это:
https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx
Смущает что методы clear "являются операцией порядка сложности O(n), где n равно length" т.е. перебором очищаются.
поэтому возник вопрос new - clear.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:21.
|