forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

ANIK123 12.06.2015 21:46

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от ARA (Сообщение 296588)
Лол! Попробуй патчрелиз Patch 5.1.0p1
http://unity3d.com/unity/qa/patch-releases

Не помогло

ILonion 12.06.2015 22:05

Ответ: Вопросы от новичка
 
ANIK123, статуса fixed пока нет:
http://issuetracker.unity3d.com/issu...t-of-audioclip

ANIK123 12.06.2015 22:46

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от ILonion (Сообщение 296590)
ANIK123, статуса fixed пока нет:
http://issuetracker.unity3d.com/issu...t-of-audioclip

Ясно

ILonion 15.06.2015 02:10

Ответ: Вопросы от новичка
 
Доброго времени!
Подскажите, пожалуйста, о спрайтах:
В сцене должно быть множество простых объектов с картинкой постоянно смотрящей в камеру.
Основной вопрос в максимально "легковесном" решении.

То ли реализовать через particle system с одной долгоиграющей частицей-картинкой для каждого объекта;
или через sprite renderer, но со скриптом .LookAt()...
или еще какой-то способ имеется ?
самый шустрый... как быть?

pax 15.06.2015 07:03

Ответ: Вопросы от новичка
 
А что-то такое не подойдет?
https://en.wikibooks.org/wiki/Cg_Pro...ity/Billboards

ILonion 15.06.2015 18:29

Ответ: Вопросы от новичка
 
Да, супер, уже работает. Большое спасибо за ссылку!
Прикрутил к нему альфа-смешивание.
Если кому-то понадобится такой билборд-шейдер:

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
}
}
}

ILonion 16.06.2015 23:46

Ответ: Вопросы от новичка
 
Доброго времени!
Скажите, самый быстрый способ получить на лету трансформ для дочерних это transform.GetChild(int) ?
а GameObject.Find (если для дочерних) самый медленный?

pax 17.06.2015 07:04

Ответ: Вопросы от новичка
 
А что, чилды все время меняются? Если получить трансформ в Start или Awake, то разницы особо нет. А в целом по индексу быстрее. А можно у скрипта создать поле Transform и назначить туда искомый трансформ заранее. Тогда ничего искать не надо.

ILonion 17.06.2015 12:12

Ответ: Вопросы от новичка
 
Да, постоянно instantiate родителей, поэтому дочерних приходится выуживать каким-либо поиском.

ILonion 21.06.2015 00:55

Ответ: Вопросы от новичка
 
Такой вопрос:
В блитце имелась возможность перебирать динамический список через
for a.list = each list, и удалять элемент delete a внутри этого же цикла. Работало вполне вменяемо.
По C# сказано, что foreach в таком же духе лучше не использовать. Действовать через for.
Получается конструкция:
PHP код:

for (int k0 0k0 <= List.Countk0++)
{
      
//...
      
List.RemoveAt(k0);
      
//...


Вопрос: правильно ли так делать в си шарп (нужен ремув по индексу) ? Смущает то, что указано здесь: "..оставшиеся элементы в списке нумеруются заново, чтобы заменить удаленный элемент". Пропусков не будет в текущем цикле? %

pax 21.06.2015 01:19

Ответ: Вопросы от новичка
 
В блице связанный список - LinkedList<T> в шарпе.

С обычными списками я обычно делаю так: если надо что-то удалять из списка, то я обрабатываю список начиная с последнего элемента, потому что RemoveAt при переборе списка вперед пропустит следующий не обработанный элемент (тут можно конечно переменную цикла уменьшить). Либо я записываю элементы, которые надо удалить в другой список не изменяя текущий, а потом удаляю через Remove в дополнительном цикле по списку с удаляемыми элементами.

ILonion 21.06.2015 02:58

Ответ: Вопросы от новичка
 
Понятно, спасибо.
А LinkedList<T> не поддерживает циклы для изменения.

UPD:
т.е. только один node удаляет и больше ничего не делает:

PHP код:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class 
ts MonoBehaviour 
{

    public 
LinkedList<field_classA_list = new LinkedList<field_class>();

    
void Start () 
    {
        for (
int k 0<= 9k++) 
        {
            
field_class aa = new field_class{};
            
A_list.AddLast (aa);
            
aa.aaa k;
        }

        
LinkedListNode<field_classnode;
        for (
node A_list.Firstnode != nullnode node.Next)
        {
            
Debug.Log(">>");
            
A_list.Remove(node);
        }

        for (
node A_list.Firstnode != nullnode node.Next)
        {
            
Debug.Log(node.Value.aaa);
        }

    }

}

public class 
field_class
{
    public 
int aaa;





UPD2:
не, ошибся. можно удалять в цикле:
PHP код:

LinkedListNode<field_classnode A_list.First;
        while (
node != null)
        {
            
LinkedListNode<field_classnode2 node.Next;
            
A_list.Remove(node);
            
node node2;
        } 


ILonion 28.06.2015 16:24

Ответ: Вопросы от новичка
 
Подскажите, пожалуйста, правильно ли я понимаю, что быстрее и правильнее делать new, чем .Clear для массивов и списков (выполняется каждый кадр) ?

pax 28.06.2015 16:38

Ответ: Вопросы от новичка
 
new выделяет память, Clear нет. Так что правильнее Clear для списков. Для массивов нет такого метода, там только пересоздание.

ILonion 28.06.2015 16:51

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 297044)
new выделяет память, Clear нет. Так что правильнее Clear для списков. Для массивов нет такого метода, там только пересоздание.

как? а это:
https://msdn.microsoft.com/ru-ru/lib...vs.110%29.aspx

Смущает что методы clear "являются операцией порядка сложности O(n), где n равно length" т.е. перебором очищаются.

поэтому возник вопрос new - clear.


Часовой пояс GMT +4, время: 04:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot