2016-09-11 7 views
-1

Настольное приложение Windows, сделанное в Unity, может читать и воспроизводить аудио.wav, но не может его открыть. Я хочу дважды щелкнуть файл .WAV и воспроизвести его. Я выполнил функцию myPlayWav (строка). И назначается расширению .wav-файла для вызова и запуска моего приложения при двойном щелчке мышью. Но:Unity Standalone Player Windows Desktop Platform - Как получить путь от файла, который дважды кликает с помощью Unity C#?

Как я могу получить путь к звуковому файлу, когда мое приложение открыто и запущено? Нужно ли что-то включать? потому что нет функции Unity.

using UnityEngine; 

public class AtStart : MonoBehaviour 
{  
    void Start() 
    { 
     string path; 
     System.Run(path ?) ... 
     StartCoroutine(myPlayWav (path)); 
    } 

    //... 

Лучше использовать Awake()?

Pease редактировать мой английский.

+0

Пользователь голосовать мне отрицательный без объяснения. Я хочу улучшить свой вопрос. любая идея или совет? –

ответ

1

Использование System.Environment.CommandLine.
Это возвращает необработанную строку (неформатированную) в командной строке. Затем используйте string.Split(' '), чтобы разделить его на отдельные аргументы. При индексе 0 должна быть ваша заявка. В индексе 1 файл, который вы хотите открыть, а затем далее индексирует другие аргументы.

using System; 

void Start() 
{ 
    string[] args = Environment.CommandLine.Split(' '); 
    string path = args[1]; 
    StartCoroutine(myPlayWav(path)); 
} 

Обратите внимание, что если приложение не запускается при открытии файла, арг [1] будет пустым.

Чтобы предотвратить IndexOutOfRange исключение вы могли бы сделать это:

using System; 

void Start() 
{ 
    string[] args = Environment.CommandLine.Split(' '); 
    if (args.Length < 1) 
    { 
     Debug.Log("There is no file that is trying to be opened!"); 
     return; 
    } 
    string path = args[1]; 
    StartCoroutine(myPlayWav(path)); 
} 
+0

Thx! Так как вопрос для пользователей «Единства», можете ли вы добавить дополнительную информацию и расширить раздел об использовании System.Environment? Я пытаюсь использовать System.Environment.CommandLineArgs, но по умолчанию это невозможно. Вероятно, мой вопрос был отрицательным, потому что есть много подобных вопросов, но не для пользователей Unity. Или отредактируйте мой Eng. –

+0

@SoaringCode Да, я могу попробовать завтра. Можете ли вы просто уточнить, что вы подразумеваете под «невозможно по умолчанию»? Это работает так, или это вызывает ошибку? –

+0

Err: 'System.Environment '- это тип, а не пространство имен. Использование директивы namespace может применяться только к пространствам имен. Похоже, CommandLineArgs() не существует. Может быть вместо GetCommandLineArgs()? –