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 28.04.2015 14:32

Ответ: Вопросы от новичка
 
Ага, все отлично.
Спасибо, Nex!

pax 28.04.2015 15:02

Ответ: Вопросы от новичка
 
Можно вывести в дебаг точнее так:
PHP код:

Debug.Log(pos.ToString("F8")); 

По умолчанию формат для вывода F1

LLI.T.A.L.K.E.R. 28.04.2015 16:48

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

void OnTriggerEnter(Collider collobj) // если игрок вошёл
audio.PlayOneShot(ZoneSound); // играть звук зоны
ScreamHUD.GetComponent<MeshRenderer>().enabled=tru e; // показать скример
gameObject.SetActive(false); // деактивирую зону
кажется при деактивации функция проигрывания звука сбрасывается, хотя скример врубается..
когда убираю деактивацию зоны - звук играет.

не хочется, конечно, выводить на таймер отрубания зоны...

ЧЯДНТ?

ILonion 28.04.2015 17:06

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

Сообщение от pax (Сообщение 295399)
Можно вывести в дебаг точнее так:
PHP код:

Debug.Log(pos.ToString("F8")); 

По умолчанию формат для вывода F1

хм, интересно. форматирование с точностью до 8 и произвольно знаков.
спасибо, pax!

P.S. pax, спасибо большое за труды по blitz-unity wiki !!

pax 28.04.2015 18:16

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

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 295401)
кажется при деактивации функция проигрывания звука сбрасывается, хотя скример врубается..
когда убираю деактивацию зоны - звук играет.

не хочется, конечно, выводить на таймер отрубания зоны...

ЧЯДНТ?

Используй http://docs.unity3d.com/ScriptRefere...ipAtPoint.html

ILonion 30.04.2015 02:08

Ответ: Вопросы от новичка
 
Такой вопрос:
У меня есть метод с неск. входящими параметрами (из разных файлов скриптов, других методов и пр.):
xclass.function(param1,param2,param3)

Unity отказывается вызывать этот метод таким способом:
xclass.function(int param1 = a,int param2 = b,int param3 = с), сообщая Unexpected symbol `param1', expecting `.'

заставляет делать так:
int param1;
int param2;
int param3;
xclass.function(param1 = a,param2 = b,param3 = с)
или так:
int param1 = a;
int param2 = b;
int param3 = c;
xclass.function(param1,param2,param3), сыпя предупреждениями о переменных которые никогда не используются.

Что я делаю неправильно в первом варианте, и можно ли как-то его добиться? Или хотя бы сделать так, чтобы предупреждения не сыпались, так как они у меня будут плодиться как тараканы в дальнейшем...
:)
?

pax 30.04.2015 07:12

Ответ: Вопросы от новичка
 
Достаточно вызвать
PHP код:

xclass.function( abс


ILonion 01.05.2015 02:03

Ответ: Вопросы от новичка
 
Спасибо, pax!
Подскажите еще некоторые моменты новичку, пожалуйста:

У меня ситуация, когда одномерный массив постоянного размера очень часто создается и удаляется (эмпирически). Как я понял в c# лучше всего не удалять, а переиспользовать. Значит мне необходимо его очищать. Вопрос: каким макаром это делать максимально быстро? Array.Clear()? или при каждом новом заходе new? (если второе, то что происходит с предыдущим массивом? он становится бессылочным и его будет ждать GC?);

И еще малый вопрос: использую переменные значений как public static, чтобы их можно было использовать из разных фалов скриптов. Постоянно приходится перед переменной писать имя класса. Есть ли возможность писать только переменную? Использовать namespace? Чего-то юнити не хочет переваривать это дело в данном случае.

pax 01.05.2015 10:59

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

2. C# строго типизированный язык, все переменные классов должны иметь конкретный тип. Только для переменных методов допускается использовать ключевое слово var с одновременной инициализацией переменной, которое означает, что переменная будет типа значения выражения справа от равно.

ILonion 01.05.2015 12:39

Ответ: Вопросы от новичка
 
Ох, я совершенно криво задал вопрос, из-за этого возникла путаница.
Во втором вопросе имел ввиду следующее:

в файле 1 я объявляю переменные:

PHP код:

public class void xclass()
{
public static 
int var;


в файле 2 использую переменную:

PHP код:

public class void dest()
{
xclass.var += 1;


Имеется ли возможность отбросить 'xclass' в файле 2 ?

seaman 01.05.2015 12:52

Ответ: Вопросы от новичка
 
Файл 2:
PHP код:

using myVar xclass.var;
public class 
void dest()
{
    
myVar  += 1;


https://msdn.microsoft.com/en-us/lib...=vs.71%29.aspx

pax 01.05.2015 13:13

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

Сообщение от seaman (Сообщение 295464)
Файл 2:
PHP код:

using myVar xclass.var;
public class 
void dest()
{
    
myVar  += 1;


https://msdn.microsoft.com/en-us/lib...=vs.71%29.aspx

Алиасы возможны только для пространств имен и для типов.

Цитата:

Сообщение от ILonion (Сообщение 295462)
Ох, я совершенно криво задал вопрос, из-за этого возникла путаница.
Во втором вопросе имел ввиду следующее:

в файле 1 я объявляю переменные:

PHP код:

public class void xclass()
{
public static 
int var;


в файле 2 использую переменную:

PHP код:

public class void dest()
{
xclass.var += 1;


Имеется ли возможность отбросить 'xclass' в файле 2 ?

Нет, не может быть глобальных переменных в C#, могут быть глобальные переменные классов.

ILonion 01.05.2015 16:11

Ответ: Вопросы от новичка
 
Большое спасибо, всё понятно!
Но в связи с этим возник еще один вопрос:

файл1, основной скрипт с апдейт:
PHP код:

public class MAIN MonoBehaviour
{
         
void start()
         {
         }
         
void update()
         {
             
///...
             
xclass.xfunction()
             
///...
         
}


файл2, какой-то метод:
PHP код:

public class xclass MonoBehaviour
{
          public static 
int param1 154;
          public static 
int param2 234;
          public static 
int param3;

          public static 
void xfunction()
          {
               
///...
               
param3 param2 param1;
               
///...
          
}


В данном случае при вызове xfunction() из update(), переменные param1,2,3 будут объявляться и занимать собой память - когда? при вызове метода или перед первым запуском? они будут объявляться единожды или каждый раз? У меня такой пробел в понимании, который хочется устранить)

h1dd3n 01.05.2015 17:22

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

Сообщение от ILonion (Сообщение 295472)
единожды или каждый раз? У меня такой пробел в понимании, который хочется устранить)

единожды.

инициализацией занимается среда выполнения (то есть это не программеры unity писали).

насколько я понимаю конечному разработчику неизвесто когда будут проинициализированы такие поля, однако 100% гарантировано что это будет сделано до первого обращения.

ILonion 01.05.2015 18:08

Ответ: Вопросы от новичка
 
Теперь понятно. Спасибо!


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

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