fjkrl 发表于 2013-3-12 10:39

Unity3D文件选择器

public static bool FileBrowser( ref string location, ref Vector2 directoryScroll, ref Vector2 fileScroll )
{
    bool complete;
    DirectoryInfo directoryInfo;
    DirectoryInfo directorySelection;
    FileInfo fileSelection;
    int contentWidth;
    // Our return state - altered by the "Select" button
    complete = false;
    // Get the directory info of the current location
    fileSelection = new FileInfo( location );
    if( (fileSelection.Attributes & FileAttributes.Directory) == FileAttributes.Directory )
    {
      directoryInfo = new DirectoryInfo( location );
    }
    else
    {
      directoryInfo = fileSelection.Directory;
    }
    if( location != "/" && GUI.Button( new Rect( 10, 20, 410, 20 ), "Up one level" ) )
    {
      directoryInfo = directoryInfo.Parent;
      location = directoryInfo.FullName;
    }
    // Handle the directories list
    GUILayout.BeginArea( new Rect( 10, 40, 200, 300 ) );
      GUILayout.Label( "Directories:" );
      directoryScroll = GUILayout.BeginScrollView( directoryScroll );
            directorySelection = BehaveLibrary.Resources.SelectList( directoryInfo.GetDirectories(), null ) as DirectoryInfo;
      GUILayout.EndScrollView();
    GUILayout.EndArea();
    if( directorySelection != null )
    // If a directory was selected, jump there
    {
      location = directorySelection.FullName;
    }
    // Handle the files list
    GUILayout.BeginArea( new Rect( 220, 40, 200, 300 ) );
      GUILayout.Label( "Files:" );
      fileScroll = GUILayout.BeginScrollView( fileScroll );
            fileSelection = BehaveLibrary.Resources.SelectList( directoryInfo.GetFiles(), null ) as FileInfo;
      GUILayout.EndScrollView();
    GUILayout.EndArea();
    if( fileSelection != null )
    // If a file was selected, update our location to it
    {
      location = fileSelection.FullName;
    }
    // The manual location box and the select button
    GUILayout.BeginArea( new Rect( 10, 350, 410, 20 ) );
    GUILayout.BeginHorizontal();
      location = GUILayout.TextArea( location );
      contentWidth = ( int )GUI.skin.GetStyle( "Button" ).CalcSize( new GUIContent( "Select" ) ).x;
      if( GUILayout.Button( "Select", GUILayout.Width( contentWidth ) ) )
      {
            complete = true;
      }
    GUILayout.EndHorizontal();
    GUILayout.EndArea();
    return complete;
}
使用
public void FileBrowserWindow( int idx )
    {
      if( FileBrowser( ref location, ref directoryScroll, ref fileScroll ) )
      {
            fileBrowser = false;
      }
    }
    public void OnGUI()
    {
      if( fileBrowser )
      {
            GUI.Window( 0, new Rect( ( Screen.width - 430 ) / 2, ( Screen.height - 380 ) / 2, 430, 380 ), FileBrowserWindow, "Browse" );
            return;
      }
    }

lovesky4 发表于 2013-4-6 21:14

{:5_424:}{:5_424:}{:5_424:}{:5_424:}

willwl 发表于 2017-5-1 15:12

顶顶多好

yz55jm 发表于 2017-5-1 15:07

真心顶

xfexpress 发表于 2017-5-1 15:11

说的非常好

willwl 发表于 2017-5-1 14:50

不错不错

lhedgeshrewj 发表于 2017-5-1 15:17

LZ真是人才

大连天龙 发表于 2017-6-12 07:58

楼主是超人

zhenailiuxing 发表于 2017-6-12 08:20

顶顶多好

v90605 发表于 2017-6-12 07:59

真心顶
页: [1] 2 3 4 5 6 7 8
查看完整版本: Unity3D文件选择器