Encountering a requirement is to upload the generated assetbundle package to the resource server and Linux for the resource server when Unity3d does the editor tool.
The implementation is divided into three parts: 1,c# Upload Tool class; 2,WINSCP script; 3, the upload function is used for the parameter invocation.
1,c# Upload Tool class
using unityengine;using system.collections;using system.io;using system;using System.diagnostics;public class uploadhelper{ public static void calluploadprocess (string arguments) { string winscppath = directory.getparent (Application.datapath) + "/WinSCP/ WinSCP.exe "; try { Process proc = null; bool redirectoutput = false; proc = new Process (); proc. startinfo.filename = winscppath; proc. startinfo.arguments = arguments; if (redirectoutput) { proc. startinfo.useshellexecute = false; proc. startinfo.redirectstandardoutput = true; proc. startinfo.createnowindow = true; } else { & nbSp; proc. startinfo.createnowindow = false; } proc. Start (); if (redirectOutput) { //Redirect, show upload tool output streamreader sr = proc. standardoutput; while (!SR. Endofstream) { & NBsP; STRING S = SR. ReadLine (); unityengine.debug.log (s); } } proc. WaitForExit (); if (Proc. exitcode == 0) { UnityEngine.Debug.LogFormat ("[{0}] upload complete!", datetime.now.tostring ("Yyyy-mm-dd hh:mm:ss")); } else { unityengine.debug.logformat ("[{0}] upload failed! exitcode:{1 } ", datetime.now.tostring (" Yyyy-mm-dd hh:mm:ss "), proc. ExitCode); } } catch (Exception ex) { unityengine.debug.logerror (String.Format ("Exception occurred :{0},{1}", ex. Message, ex. Stacktrace.tostring ())); } }}
2,WINSCP script,
Uploadassetbundles.script
Option echo offoption Batch onoption confirm Offopen scp://"%1%": "%2%" @ "%3%" option transfer binarysynchronize Remote-mir Ror-delete%4%%5%chmod 755%5%/*closeexit
3,c# Program incoming call implementation upload function
Private static void uploadtoserver (Buildtarget target) { string remotefolder = null;//Remote Server resource path switch (target) { case buildtarget.standalonewindows64: remoteFolder = "###/assetbundle/pc"; break; case BuildTarget.Android: remoteFolder = "###/assetbundle/android"; break; case buildtarget.ios: remoteFolder = "###/assetbundle/ios"; break; default: return; } string uploaderpath = application.datapath + "/uploader"; //Script Path string scriptpath = uploaderPath + "/uploadassetbundles.script"; // Log path    &NBSp; string logpath = directory.getparent (Application.dataPath) + "/upload.log"; string localfolder = application.datapath + "/abs";//local Resource directory path string[] param ={ "Test",//remote server login user name "test1234",//remote server login password "192.168.1.xxx",//remote server IP or domain name localfolder, remotefolder, scriptPath, logPath, }; String arguments = string.format ("/console /log={6} /script={5} /parameter \ "{0}\" \ "{1}\" \ "{2}\" \ "{3}\" \ "{4}\" ", param); uploadhelper.calluploadprocess (arguments); }
Arguments the last
/parameter \ "{0}\" \ "{1}\" \ "{2}\" \ "{3}\" \ "{4}\" "
Is the parameter passed to the WinSCP script, corresponding to "%1%" to "%5%" in the script.
About the WINSCP command line call description You can view the official website https://winscp.net/eng/docs/scripting.
WINSCP can be downloaded here: http://down.51cto.com/data/2304295.
This article is from the "zl1030 Records" blog, so be sure to keep this source http://zl1030.blog.51cto.com/274507/1920820
Unity3d to the Linux server SCP file using C # via WINSCP command line