System.Diagnostics

Программирование на Юнити.

System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 14:55

Кто-нибудь может подсказать в чём дело? Пишу в визуальной студии следующий код:

Синтаксис:
Используется csharp
using System.Diagnostics;

...
Process wcfMediator = new Process(); // Unity нормально компилирует скрипт
wcfMediator.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // Начинает верещать
...
 


Почему-то на консоле я могу увидеть следующее:
"The name `ProcessWindowStyle' does not exist in the current context"
Я бы мог понять, если бы оно просто не работало и всё, тогда я бы подумал, что Unity не дружит с System.Diagnostics. Но во-первых эта библиотека стандартная и входит в System, а во-вторых на строчку Process wcfMediator = new Process(); она адекватно реагирует.
И самое интересно, что данная ошибка появляется таинственным образом только в момент сохранения сцены с помощью BuildPipeline.BuildScene( ). Просто так проект нормально запускается и прекрасно всё видит. Более того, если написать строку кода "MonoBehaviour.print(wcfMediator.StartInfo.WindowStyle);", то на консоле я получу Hidden, как и ожидалось.
Значит что-то странное происходит именно в момент компиляции перед сохранением.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 16:51

в момент сохранения сцены с помощью BuildPipeline.BuildScene( ).

Наверно имели в виду BuildPipeline.BuildPlayer?
BuildPlayer Window его собственно и использует. Попробуйте сбилдить оттуда (без вашего скрипта). Если та же ошибка - bug report. Если нет - скорее всего меняете какаие-нибудь настройки типа .net версии поэтому и не находит
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:05

discouraged_one писал(а):
в момент сохранения сцены с помощью BuildPipeline.BuildScene( ).

Наверно имели в виду BuildPipeline.BuildPlayer?


Да, конечно, просто как-то на автомате написал.

discouraged_one писал(а):BuildPlayer Window его собственно и использует. Попробуйте сбилдить оттуда (без вашего скрипта).

Можно подробнее? Что Вы имеете ввиду?
Я попробовал создать пустой проект, забацал туда следующий скрипт:

Синтаксис:
Используется csharp
using UnityEngine;
using System.Diagnostics;
using System.Collections;

public static class NewBehaviourScript
{      
  static void Start ()
  {
    string newProcessName = @"D:\MediatorWCF.exe";

    Process wcfMediator = new Process();
    wcfMediator.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    wcfMediator.StartInfo.FileName = newProcessName;
    wcfMediator.StartInfo.CreateNoWindow = true;
    wcfMediator.EnableRaisingEvents = true;
        }
}


и полчил точно такую же ошибку при использовании BuildPlayer().
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:14

и полчил точно такую же ошибку при использовании BuildPlayer().

Вот про это и говорил 8). Как я понял у вас есть Editor Script который что-то делает и вызывает BuildPlayer. Можно его убрать и попробывать без него.
И еще посмотрите в Player Settings -> Api Compatibility Level. В .net 2.0 subset может и не быть (честно говоря не знаю - но такие ошибки обычно оттуда)

EDIT: да, System.Diagnostics есть только в полном .net 2.0 - выберите его и попробуйте еще раз
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:19

discouraged_one писал(а):Как я понял у вас есть Editor Script который что-то делает и вызывает BuildPlayer. Можно его убрать и попробывать без него.


Если его убрать, то как тогда я буду сохранять сцену? Без сохранения всё работает. Проблемы возникают именно тогда, когда вызывается метод BuildPlayer( ).

discouraged_one писал(а):И еще посмотрите в Player Settings -> Api Compatibility Level. В .net 2.0 subset может и не быть (честно говоря не знаю - но такие ошибки обычно оттуда)


Установил просто .Net 2.0, ничего не изменилось
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:24

Вопрос собственно вот в чём. Если вы сделаете пустой проект и положите в него только ваш скрипт для MonoBehaviour и нажмете Build в окошке - работает или нет. Если работает - то вы что-то делает в вашем Editor Script, там и надо смотреть

EDIT: у меня собралось приложение нормально (под win)
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:26

Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;
using System.Collections;

public static class Builder
{
  [MenuItem("Build/BuildStart")]
  private static void Rewrite()
  {
    BuildPipeline.BuildPlayer(new string[] { "Assets/MainMenu.unity" }, "C:/123/Scene.unity3d", BuildTarget.WebPlayer, BuildOptions.BuildAdditionalStreamedScenes);
  }
}


Вот он
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:27

Само приложение билдится нормально с обоими этими скриптами.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:29

Так надо с этого начинать - web player использует свой mono из которого поубтрали всякое для security - теперь понятно - пну наших mono-guys
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:34

Так каков рецепт лечения?

Когда я пишу "BuildTarget.StandaloneWindows, BuildOptions.BuildAdditionalStreamedScenes", то вообще ничего не происходит, ничего не сохраняется.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:41

В WebPlayer нельзя создавать\запускать ПРОЦЕССЫ - и соответствующий api вырезан.
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:43

discouraged_one писал(а):В WebPlayer нельзя создавать\запускать потоки - и соответствующий api вырезан.


Хорошо, пусть так. Тогда подскажите, как сохранить точно так же для StandaloneWindows? Чтобы потом можно было воспользоваться методом Application.LoadLevelAdditive( )?
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:49

А для этого разве надо что-то streamed? По-моему просто можно добавить в список сцен для билда
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: System.Diagnostics

Сообщение EvgeniyT 24 янв 2011, 17:52

discouraged_one писал(а):А для этого разве надо что-то streamed? По-моему просто можно добавить в список сцен для билда


Нет, мне нужно получить отдельный файл формата .unity3d, который будет содержать в себе объекты сцены.
Всё таки мне непонятно, почему на команду
Синтаксис:
Используется csharp
"BuildPipeline.BuildPlayer(new string[] { "Assets/MainMenu.unity" }, "C:/123/Scene.unity3d", BuildTarget.StandaloneWindows, BuildOptions.BuildAdditionalStreamedScenes);"

Unity вообще никак не реагирует!
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: System.Diagnostics

Сообщение discouraged_one 24 янв 2011, 17:57

Реагирует
должно писать в лог
"BuildAdditionalStreamedScenes is only supported for web player build targets"

Этот флаг вообще не совсем то что вы думаете ;-)

Так вам что надо? AssetBundle - там есть для этого ф-ия. Аддитивная загрузка - делаете всё как обычно просто по другому грузите
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11