Resource packaging script, placed under the Assets\editor folder
Using unityengine;using system.collections;using unityeditor;using system.io;public class assetpack:editor{/*[  MenuItem ("Custom editor/build assetbundle from Selection-track dependencies")]static void ExportResource2 () {//Bring    Up save panel string path = Editorutility.savefilepanel ("Save Resource", "", "New Resource", "Unity3d"); if (path.        Length! = 0) {//Build the resource file from the active selection.        object[] selection = selection.getfiltered (typeof (Object), selectionmode.deepassets); Buildpipeline.buildassetbundle (Selection.activeobject, Selection, Path, BUILDASSETBUNDLEOPTIONS.C ollectdependencies |        Buildassetbundleoptions.completeassets);    Selection.objects = Selection; }} * *//*[menuitem ("Custom editor/build assetbundle complited to bytes")]static void ExportResource5 () {//Bring up S    Ave Panel String path = Editorutility.savefilepanel ("Save Resource", "", "New Resource", "Unity3d"); if (path. LenGth! = 0) {//Build the resource file from the active selection.        object[] selection = selection.getfiltered (typeof (Object), selectionmode.deepassets); Buildpipeline.buildassetbundle (Selection.activeobject, Selection, Path, BUILDASSETBUNDLEOPTIONS.C ollectdependencies |        Buildassetbundleoptions.completeassets, buildtarget.standalonewindows);        Selection.objects = Selection;        FileStream fs = new FileStream (path, FileMode.Open, FileAccess.ReadWrite); byte[] buff = new Byte[fs.        Length]; Fs. Read (Buff, 0, (int) fs.        Length);        string password = "Shanghaichaolan"; Packxor (Buff,buff.        Length,password); Debug.Log ("filelength:" + buff.        Length); Fs.        Close ();        File.delete (path); String binpath = path. Substring (0, path. LastIndexOf ('. '))        + ". Bytes";        FileStream cfs = new FileStream (binpath,filemode.create); Cfs. Write (buff, 0, buff.        Length); Debug.Log ("filelength:" + buff. Length);        Buff = null; Cfs.     Close (); }} */[menuitem ("Custom editor/save Scene2")]static void Exportresource () {//Bring up Save panel string path = Ed    Itorutility.savefilepanel ("Save Resource", "", "New Resource", "Unity3d"); if (path.        Length! = 0) {//Build the resource file from the active selection.        object[] selection = selection.getfiltered (typeof (Object), selectionmode.deepassets); Buildpipeline.buildassetbundle (Selection.activeobject, Selection, Path, buildassetbundleoptions . collectdependencies |        Buildassetbundleoptions.completeassets);    Selection.objects = Selection; }}[menuitem ("Custom editor/make unity3d file to bytes file")]static void Exportresourcenotrackss () {String path = Edito    Rutility.savefilepanel ("Save Resource", "", "New Resource", "Unity3d"); if (path.        Length! = 0) {FileStream fs = new FileStream (path, FileMode.Open, FileAccess.ReadWrite); byte[] buff = new Byte[fs. LEngth]; Fs. Read (Buff, 0, (int) fs.        Length);        string password = "Shanghaichaolan"; Packxor (buff, buff.        Length, password); Debug.Log ("filelength:" + buff.        Length); Fs.        Close ();        File.delete (path); String binpath = path. Substring (0, path. LastIndexOf ('. '))        + ". Bytes";        FileStream cfs = new FileStream (BinPath, FileMode.Create); Cfs. Write (buff, 0, buff.        Length); Debug.Log ("filelength:" + buff.        Length);        Buff = null; Cfs.    Close ();    }}static void Packxor (byte[] _data, int _len, string _pstr) {int length = _len;    int strcount = 0; for (int i = 0; i < length; ++i) {if (Strcount >= _pstr.        Length) strcount = 0;    _data[i] ^= (byte) _pstr[strcount++]; }}}
The menu will appear two, the resources to be packaged into a prefab, select the resources, and then the menu custom Editor/save Scene2 Enter the name
The newly generated file, then select the newly generated file, click the menu custom editor/make Unity3d file to bytes file input name
Another file is generated, then click on the file, the menu named Editor/save Scene2, so that the package encryption is OK
Using unityengine;using System.collections;public class Loadnew:monobehaviour {public string filename;    private string Bundleurl;    private string Assetname;        void Start () {//startcoroutine (Loadscenee ());    Startcoroutine (LoadResource ());        } IEnumerator Loadscenee () {string path;        Path = "file://" + Application.datapath + "/" + filename + ". Unity3d";        Debug.Log (path);        www www = new www (path);        yield return www;        Assetbundle bundle = Www.assetBundle; Gameobject go = bundle.        Load ("Gcube", typeof (Gameobject)) as Gameobject;        Gameobject Objscene = Instantiate (Www.assetBundle.mainAsset) as Gameobject; Bundle.    Unload (FALSE);        } IEnumerator LoadResource () {bundleurl = "file://" + Application.datapath + "/" + filename + ". Unity3d";        Debug.Log ("Path:" + Bundleurl);        www m_download = new www (bundleurl);        Yield return m_download;      if (m_download.error! = null)  {//Debug.logerror (M_DOWNLOAD.ERROR);            Debug.logerror ("Warning errow:" + "Newscene");        Yield break;        } Textasset txt = m_Download.assetBundle.Load (filename, typeof (Textasset)) as Textasset;        byte[] data = txt.bytes;        Byte[] Decrypteddata = decryption (data);        Debug.Log ("Decrypteddata Length:" + decrypteddata.length);    Startcoroutine (Loadbundle (decrypteddata)); } IEnumerator Loadbundle (byte[] decrypteddata) {assetbundlecreaterequest ACR = assetbundle.createfrommemory (        Decrypteddata);        Yield return ACR;        Assetbundle bundle = Acr.assetbundle;    Instantiate (Bundle.mainasset); } byte[] Decryption (byte[] data) {byte[] tmp = new byte[data.        Length]; for (int i = 0; i < data. Length;        i++) {Tmp[i] = Data[i];        }//Shanghaichaolan string password = "Shanghaichaolan"; Packxor (tmp,tmp.        Length,password); REturn tmp;        } static void Packxor (byte[] _data, int _len, string _pstr) {int length = _len;        int strcount = 0; for (int i = 0; i < length; ++i) {if (Strcount >= _pstr.            Length) strcount = 0;        _data[i] ^= (byte) _pstr[strcount++]; }} void Update () {}}
Load encrypted and unencrypted resources
Unity3d resource packing and encryption arrangement