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)

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.

pax 28.06.2015 17:15

Ответ: Вопросы от новичка
 
Если выбирать между new + частыми срабатываниями сборщика мусора и Clear - небольшой нагрузкой на проц без сборки мусора, то конечно Clear. Ну и потестируй уже сам что тебе больше подходит. Плюс не факт что выделение памяти будет быстрее чем затирание.

Morganolla 03.07.2015 20:32

Ответ: Вопросы от новичка
 
Вопрос: с какого то момента persistentDataPath стал возвращать пустую строку на Андроид-планшете. В редакторе на винде все работает ОК. Подскажите в чем может быть дело? В игре задействован гугл-плей сервис, но не думаю, что это влияет....

ANIK123 06.07.2015 02:36

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

Сообщение от ANIK123 (Сообщение 296587)
Обновился с 5.0.1 до 5.1, пропала возможность импортировать аудио



-_-

Не знаю в какой версии это исправили, но в 5.1.1р3 уже все ОК
:super:

Morganolla 06.07.2015 19:43

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

Сообщение от Morganolla (Сообщение 297185)
Вопрос: с какого то момента persistentDataPath стал возвращать пустую строку на Андроид-планшете. В редакторе на винде все работает ОК. Подскажите в чем может быть дело? В игре задействован гугл-плей сервис, но не думаю, что это влияет....

Обнаружил, что это происходит из-за плагина пуш-уведомлений - https://github.com/onepf/OPFPush-Unity-Plugin. Возможно там что-то с манифестом. Исследования продолжаю. Буду рад вашей помощи.

ILonion 09.07.2015 02:57

Ответ: Вопросы от новичка
 
Подскажите, пожалуйста, почему выдает только единицу?
PHP код:

void Update () 
        {
               
Random.seed = (int)(Time.realtimeSinceStartup 1000);
               
Debug.Log(Random.Range(12));
        } 


pax 09.07.2015 07:06

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

Returns a random integer number between min [inclusive] and max [exclusive].
http://docs.unity3d.com/ScriptRefere...dom.Range.html

ILonion 09.07.2015 13:30

Ответ: Вопросы от новичка
 
Так это у них опечатка получается

pax 09.07.2015 13:37

Ответ: Вопросы от новичка
 
Вообще-то ты смотришь на другую функцию:


ANIK123 09.07.2015 20:50

Ответ: Вопросы от новичка
 
В новой версии юнити EditorGUILayout.ObjectField переработали, и теперь он показывает "превью" вместо скучного поля, и это хорошо) Но:
1 Превьюшка не реагирует на BeginHorizontal/EndHorizontal, располагается только справа с самого краю и все
2 Наблюдается большая утечка памяти: при каждом обновлении инспектора, который использует ObjectField, диспетчер задач показывает рост используемой памяти, за время редактирования кода инспектора утечка достигла аж ~700мб
Или я что-то натупил?
Редактор написан для ScriptableObject, который редактируется не в сцене, а в проекте
PHP код:

for (int i 0v.Value.directions.Lengthi++){
    
v.Value.directions[i] = EditorGUILayout.ObjectField(resCellTextv.Value.directions[i], typeof(Sprite), false) as Sprite



Morganolla 09.07.2015 23:21

Ответ: Вопросы от новичка
 
Вопрос: На сцене есть два канваса типаWordSpace, и у них перекрываются однотипные элементы управления типа скролл-ректангл. Как определить какой будет активным (перекрывать по управлению другой). И как заскриптовать приоритет по управлению.

pax 09.07.2015 23:26

Ответ: Вопросы от новичка
 
Рейкастом видимо. Попробуй найти пример использования вот этой функции: http://docs.unity3d.com/ScriptRefere...aycastAll.html

Morganolla 10.07.2015 01:10

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

Сообщение от pax (Сообщение 297554)
Рейкастом видимо. Попробуй найти пример использования вот этой функции: http://docs.unity3d.com/ScriptRefere...aycastAll.html

Не очень понятно. В EventSystem выстраивается какой-то порядок приоритетов канвасов (мировых спейсов) в случае их перекрывания друг другом. Нужно как-то туда залезть и нужный канвас поставить на первое место.

pax 10.07.2015 09:05

Ответ: Вопросы от новичка
 
А там в RaycastResult нет нужной инфы?

ANIK123 14.07.2015 10:28

Ответ: Вопросы от новичка
 
Большинство, если не все, использовали хоть раз FacebookSDK. Но как?)
Как я понял, чтобы он заработал на android нужно его немножно настроить, в "вкладке" "Android Build Facebook Settings"
Там меня попросили установить OpenSSL, что я и сделал, но sdk этого не заметил и продолжил клянчить то же самое
В гугле сказали изменить глобальную переменную windows-a "Path", значение её получилось таким:
C:\Documents and Settings\All Users\Application Data\Oracle\Java\javapath;%SystemRoot%\system32;%S ystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\TortoiseGit\bin;C:\OpenSSL-Win32\bin\;C:\Program Files\Java\jdk1.7.0_79\bin\
Ура, теперь sdk ничего не просит. Вообще. Умирает. Когда пытають открыть ту "вкладку" юнити зависает, а в процессах висит openssl жрущий вплоть до 100% cpu. В начале думал идет какой-то тяжелый процесс генерации всяких-там ключей, но увлекшись чтением не заметил как прошел час, а юнити все так же мертв
Можете описать как Вы настраивали FacebookSDK для Android?

pax 14.07.2015 10:55

Ответ: Вопросы от новичка
 
Я не использовал)

ANIK123 15.07.2015 04:14

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

Сообщение от ANIK123 (Сообщение 297782)
Большинство, если не все, использовали хоть раз FacebookSDK. Но как?)
Как я понял, чтобы он заработал на android нужно его немножно настроить, в "вкладке" "Android Build Facebook Settings"
Там меня попросили установить OpenSSL, что я и сделал, но sdk этого не заметил и продолжил клянчить то же самое
В гугле сказали изменить глобальную переменную windows-a "Path", значение её получилось таким:
C:\Documents and Settings\All Users\Application Data\Oracle\Java\javapath;%SystemRoot%\system32;%S ystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\TortoiseGit\bin;C:\OpenSSL-Win32\bin\;C:\Program Files\Java\jdk1.7.0_79\bin\
Ура, теперь sdk ничего не просит. Вообще. Умирает. Когда пытають открыть ту "вкладку" юнити зависает, а в процессах висит openssl жрущий вплоть до 100% cpu. В начале думал идет какой-то тяжелый процесс генерации всяких-там ключей, но увлекшись чтением не заметил как прошел час, а юнити все так же мертв
Можете описать как Вы настраивали FacebookSDK для Android?


Ну вот, "вкладка" разворачивается. Что я сделал? В Publish Settings создал keystore и один key в нем. Я так понимаю, этот шаг все нормальные люди делают раньше. Хотя, не уверен что именно это помогло, ибо специально удалил keystore, а вкладка всеравно открывается. Но это единственная версия случившегося
:)

Nex 15.07.2015 05:22

Ответ: Вопросы от новичка
 
Keystore это лицензионный ключ. По сути он нужен только для андройд-маркетов.

Andvrok 15.07.2015 11:33

Ответ: Вопросы от новичка
 
Да откуда вы лезете-то со своими андроЙдами?

ANIK123 16.07.2015 05:37

Ответ: Вопросы от новичка
 
После обновления до 5.1 при билде под андроид выскакивает ошибка компиляции, мол "у BaseVertexEffect нету метода OnValidate и Start, которые можно перегружать", при том, что если их не перегружать, а просто обьявлять, в редакторе вылазит варнинг мол "у BaseVertexEffect уже есть метод OnValidate и Start", но зато билдится без ошибок
:)

ILonion 18.07.2015 00:14

Ответ: Вопросы от новичка
 
Говорят, что нет способа в юнити подвинуть курсор мыши в нужные x,y?
Только сторонние поделки?

pax 18.07.2015 00:16

Ответ: Вопросы от новичка
 
Смотря где. В Windows Standalone можно воспользоваться WinAPI наверное. В веб плеере нельзя.

ILonion 18.07.2015 00:31

Ответ: Вопросы от новичка
 
да, Win...
значит, фактически, нельзя.

ILonion 22.07.2015 01:57

Ответ: Вопросы от новичка
 
pax, подскажи, пожалуйста:
как мне получить true\false о нажатии кнопки в энном месте скрипта
PHP код:

Button but gameobject.GetComponent<Button>();
but.onClick.AddListener(method); 

method вызывается по сотне+ раз сразу почему-то.
или
PHP код:

if (GUI.Button(Rect(10,10,50,50),btnTexture)) 

тогда непонятно как получить rect созданной во вьюпорте кнопки.

?

pax 22.07.2015 07:01

Ответ: Вопросы от новичка
 
Сотня раз? Баги ищи. Получить экранные координаты можно через RectTransform.GetWorldCorners

ILonion 22.07.2015 13:50

Ответ: Вопросы от новичка
 
да, сотня+ раз, конечно, была из-за отсутствия в коде RemoveListener и оного же понимания у меня.
теперь действует:
PHP код:

but.onClick.RemoveListener(test);
but.onClick.AddListener(test); 

такая запись корректна? (в update)

pax 22.07.2015 15:44

Ответ: Вопросы от новичка
 
А с какой целью удалять и добавлять в Update?

ILonion 22.07.2015 17:49

Ответ: Вопросы от новичка
 
определенной цели нет, скорее привычка.
не вешаю скрипты на объекты.
работает один глобальный скрипт, который управляет всей сценой. мне так удобнее.
так понимаю, что надо в OnGUI()?

Taugeshtu 22.07.2015 20:11

Ответ: Вопросы от новичка
 
Подписался на Awake() / Start(), отписался на OnDestroy(); коллбэк сработает один раз при каждом нажатии на кнопку.

ILonion 22.07.2015 23:06

Ответ: Вопросы от новичка
 
Догнал. Большое спасибо!

ANIK123 28.07.2015 10:38

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

Сообщение от ANIK123 (Сообщение 297782)
Большинство, если не все, использовали хоть раз FacebookSDK. Но как?)
Как я понял, чтобы он заработал на android нужно его немножно настроить, в "вкладке" "Android Build Facebook Settings"
Там меня попросили установить OpenSSL, что я и сделал, но sdk этого не заметил и продолжил клянчить то же самое
В гугле сказали изменить глобальную переменную windows-a "Path", значение её получилось таким:
C:\Documents and Settings\All Users\Application Data\Oracle\Java\javapath;%SystemRoot%\system32;%S ystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\TortoiseGit\bin;C:\OpenSSL-Win32\bin\;C:\Program Files\Java\jdk1.7.0_79\bin\
Ура, теперь sdk ничего не просит. Вообще. Умирает. Когда пытають открыть ту "вкладку" юнити зависает, а в процессах висит openssl жрущий вплоть до 100% cpu. В начале думал идет какой-то тяжелый процесс генерации всяких-там ключей, но увлекшись чтением не заметил как прошел час, а юнити все так же мертв
Можете описать как Вы настраивали FacebookSDK для Android?

Запоздало отвечаю сам себе: установить другую версию OpenSSL

MadMedic 28.07.2015 10:47

Re: Вопросы от новичка
 
Вложений: 1
Привет! Как сделать чтобы отдельный сюрфейс меша не отбрасывал тень? Обязательно делать другим мешем? На картинке декаль бросает тень на стену

Morganolla 28.07.2015 11:30

Ответ: Вопросы от новичка
 
Подложить прозрачный меш, не принимающий тень? Может.

SBJoker 28.07.2015 11:49

Ответ: Вопросы от новичка
 
Добавить декаль в список исключений для шадоумапера.

Nex 28.07.2015 12:31

Ответ: Вопросы от новичка
 
В Mesh Renderer есть "Cast Shadow" галочка.

pax 29.07.2015 07:35

Ответ: Вопросы от новичка
 
Выбрать для декали материал из группы Transparent, а не Cutout.

MadMedic 29.07.2015 08:38

Re: Вопросы от новичка
 
Свойство материала Rendering mode (cutout, transparent, fade) - на результат не влияет.
А поменять в Mesh Renderer 'cast shadow' на off. то что надо. Подкладывать прозрачный меш имхо извращение

MadMedic 30.07.2015 10:23

Re: Вопросы от новичка
 
Вложений: 1
Снова вопрос по материалам. Никак не могу добиться полупрозрачного объекта , на который ложится тень. В режиме CuteOut все освещено правильно, но полупрозрачности ясное дело нет (или все, или ничего). А в режимах Fade/ Transparent тень не попадает, и объект явно выделяется из окружения. unity5 все настройки стандартные.

pax 30.07.2015 10:42

Ответ: Вопросы от новичка
 
Эх, когда же мы на Unity 5 перейдем, чтобы покопаться в новых материалах :(

Жека 01.08.2015 16:37

Ответ: Вопросы от новичка
 
Можно ли вырезать из спрайта кусок произвольной формы, по массиву точек (x,y)? Или хотя бы круглой формы.
Спрайт 2д.

Делаю игру "найди отличия", хочу сделать анимацию для различающихся участков, путём вырезания формы по точкам полигон-коллайдера, и далее уменьшение альфы и увеличение масштаба.

Как бы это сделать?

pax 01.08.2015 23:51

Ответ: Вопросы от новичка
 
А добавить второй такой же спрайт с маской не прокатит? Точнее объект с маской и внутрь него такой же спрайт.

Жека 02.08.2015 12:32

Ответ: Вопросы от новичка
 
pax, покатит. но я не смог маску приделать для спрайтов, она для Ui элементов работает, а для обычного объекта нет.
Думаю, можно и в канвасе сделать через Mask+Image, разницы неn вроде.

seaman 02.08.2015 13:02

Ответ: Вопросы от новичка
 
Думаю можно реализовать шейдерами. Тут это обсуждалось:
http://answers.unity3d.com/questions...e-masking.html
http://unity3d.ru/distribution/viewt...f=105&p=168183
Также ест платное конкретное решение:
https://www.assetstore.unity3d.com/en/#!/content/27642

WISHMASTER35 06.08.2015 01:09

Ответ: Вопросы от новичка
 
Как в сетевых играх делается выстрел?
Когда я стрельнул в противника, то надо противнику посылать RPC или MasterClient-у? RPC - сообщение, что попал в тебя.

pax 06.08.2015 06:25

Ответ: Вопросы от новичка
 
Зависит от архитектуры сети:
1. Авторитарная - серверу.
2. Автоританая с мастерклиентом - мастерклиенту.
3. Не авторитарная - игроку, по которому попал.

ANIK123 20.08.2015 16:13

Ответ: Вопросы от новичка
 
Извините за нескромный вопрос: сколько можно ожидать в среднем MAU?
Игра для смартфонов, простенькая, фри-ту-плей, но будут нормальные инвестиции в рекламу
Спрашиваю, что бы хоть как-то ориентироваться в тарифах BaaS-сервисов

ILonion 21.08.2015 00:29

Ответ: Вопросы от новичка
 
Можно ли акромя поиска получить доступ к размеру (x,y,z) шейпа частиц
http://answers.unity3d.com/questions...ection-in.html
?

FREE MAN 10.09.2015 23:50

Ответ: Вопросы от новичка
 
Всем доброго времени суток!
Нужна подсказка.
Есть определенный объект (А) и объект (Б) объект (А) уже находится на сцене, а объект (Б) создается из кода
Код:

Instantiate (Б [0], new Vector3 (А[0].transform.position.x, А[0].transform.position.y + 3,А[0].transform.position.z), Quaternion.identity);
. Мне нужно просчитать дистанцию между этими объектами, делаю это так

Код:

using UnityEngine;
using System.Collections;

public class potera_gruza : MonoBehaviour {

        public Transform[] cars;
        //public static int seletc_gruz_random;
        public float Distance_gruz;
        void Start () {
       
        }

        //void Update () {
                void LateUpdate() {
                Debug.Log ("Destroy_gruzes "+Destroy_gruz.Destroy_gruzes);

                if (Time.frameCount % 20 == 0) {
                        if (cars[0]) {
                        float dist = Vector3.Distance (cars[0].position, transform.position);
                                        if (dist > Distance_gruz) {
                                        Destroy_gruz.Destroy_gruzes = 1;
                                                return;
                               
                                        }
                        }
        }
}
}

Дистанцию я получаю все ок, но он считает дистанцию только от той точки где создался префаб. Как сделать чтобы это точка двигалась за моим объектом? За ранее спасибо если не понятен вопрос то дополню.

pax 11.09.2015 01:27

Ответ: Вопросы от новичка
 
Так надо посчитать дистанцию или чтобы объект двигался?

FREE MAN 11.09.2015 01:41

Ответ: Вопросы от новичка
 
Надо как то заставить точку где создается префаб двигаться вместе с объектом который движется. Ситуация такая, Есть грузовик я заехал в точку создал груз, начинаю отъезжать, а груз считает дистанцию не от грузовика а от точки где создался груз. Нужно что бы груз считал дистанцию с грузовиком.

pax 11.09.2015 02:18

Ответ: Вопросы от новичка
 
Сделать груз чайлдом к грузовику? Считать дистанцию между грузом и грузовиком?


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

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