Unityでファイルをdrag&dropしてファイルパスを取得する
gitでダウンロードする。
https://github.com/Bunny83/UnityWindowsFileDrag-Drop
それを解凍して、その中にあるファイルをAssetにDrag&Drop
FileDragAndDrops.csを以下のようにアタッチする(ctrl + s で上書きしちゃって良い)。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //追加
using System.Linq;
using B83.Win32;
public class FileDragAndDrop : MonoBehaviour
{
public Text display; //インスペクタで出力するUI-Textを登録
List<string> log = new List<string>();
void OnEnable ()
{
// must be installed on the main thread to get the right thread id.
UnityDragAndDropHook.InstallHook();
UnityDragAndDropHook.OnDroppedFiles += OnFiles;
}
void OnDisable()
{
UnityDragAndDropHook.UninstallHook();
}
void OnFiles(List<string> aFiles, POINT aPos)
{
// do something with the dropped file names. aPos will contain the
// mouse position within the window where the files has been dropped.
string str = "Dropped " + aFiles.Count + " files at: " + aPos + "\n\t" +
aFiles.Aggregate((a, b) => a + "\n\t" + b);
// pathはaFiles[0]の中に格納されてる
// なぜかDebug出力されない?
Debug.Log(str);
// log.Add()で画面の左上に出力される
log.Add(str);
//UI-Text に出力
if (display != null)
{
display.text = ("Dropped " + aFiles.Count + " files at: " + aPos + "\n" +
aFiles.Aggregate((a, b) => a + "\n" + b));
}
}
// 実行中はデバッグログ出ないからpathを表示する用
private void OnGUI()
{
if (GUILayout.Button("clear log"))
log.Clear();
foreach (var s in log)
GUILayout.Label(s);
}
}
HierarchyでCreate Emptyする(GameObjectという名前で出来上がる)。
GameObjectに、アセットしたスクリプトファイルをAdd Componentする。
UnityでFile → Build SettingsでStandaloneに設定してBuild And Runを押す。
これで全画面でアプリが動くから、そこにファイルDorag&Dropすればパスが表示される。
ファイルのパスはaFiles[0],ドロップしたときの座標はaPosに格納されています。
また,アプリを実行しないとファイルのドロップ判定がされないようなので,更新するごとにCtrl+Bで実行してください.
Author And Source
この問題について(Unityでファイルをdrag&dropしてファイルパスを取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/ReoNagai/items/7d80b9c0d13190569cea著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .