精华内容
下载资源
问答
  • Unity资源】Asset Store免费资源分享总览-附件资源
  • 谈谈AssetStore及其脱离Unity下载方法

    万次阅读 2016-11-15 22:12:33
    AssetStore一直是Unity开发者又爱又恨的东西。首先这个生态绝对是一个先进的,并且越来越能够吸引高质量的开发者开发或开源他们的插件。它的缺点可能是大陆开发者尤为头疼的。 1、付费,客观的看99%的资源价格都在...

    AssetStore一直是Unity开发者又爱又恨的东西。首先这个生态绝对是先进的,并且越来越能够吸引高质量的开发者开发或开源他们的插件。它的缺点可能是大陆开发者尤为头疼的。

    1、付费,客观的看99%的资源价格都在100刀以内,先不论个人开发者能否完成同样功能的开发,即使可以,也绝对值回工时费了。

    2、网络,没有验证过在国外是否都能流畅下载,至少使用电信、网通的“局域网”都十分痛苦。

    3、断点续传,AssetStore的资源下载过程中一旦网络异常或关闭Unity,都只能“从0开始”。


    我们都知道AssetStore下载到Windows本地的路径是C:\Users\用户名\AppData\Roaming\Unity\Asset Store-5.x\开发者公司名\插件名\xxx.unitypackage。

    下载过程中会有如下2个文件生成,在目录下持续F5,TMP文件体积会增长。



    而JSON文件由url和key组成。

    {"download" : {"url" : "http://d2ujflorbtfzji.cloudfront.net/download/950fd1fa-e786-4587-8180-13f83f057c52", "key" : "b370540fa8321d35e84cedafc7565512b69f06ae73cf07c589db3899a1b0cd4555c11dc3eae8561271d18d9012106263"}}


    url很明显可以拷贝到任何下载器中下载,但下载完的文件即使手动添加后缀.unitypackage,也无法导入unity中使用。



    后来查阅参考资料,发现可以通过key来解码,代码如下。 

    using System;
    using System.Reflection;
    
    namespace Babybus.Framework.ExtensionMethods
    {
        public static class AccessExtensions
        {
            public static T InvokeConstructor<T>(this Type type, Type[] paramTypes = null, object[] paramValues = null)
            {
                return (T)type.InvokeConstructor(paramTypes, paramValues);
            }
    
            public static object InvokeConstructor(this Type type, Type[] paramTypes = null, object[] paramValues = null)
            {
                if (paramTypes == null || paramValues == null)
                {
                    paramTypes = new Type[] { };
                    paramValues = new object[] { };
                }
    
                var constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, paramTypes, null);
    
                return constructor.Invoke(paramValues);
            }
    
            public static T Invoke<T>(this object o, string methodName, params object[] args)
            {
                var value = o.Invoke(methodName, args);
                if (value != null)
                {
                    return (T)value;
                }
    
                return default(T);
            }
    
            public static T Invoke<T>(this object o, string methodName, Type[] types, params object[] args)
            {
                var value = o.Invoke(methodName, types, args);
                if (value != null)
                {
                    return (T)value;
                }
    
                return default(T);
            }
    
            public static object Invoke(this object o, string methodName, params object[] args)
            {
                Type[] types = new Type[args.Length];
                for (int i = 0; i < args.Length; i++)
                    types[i] = args[i] == null ? null : args[i].GetType();
    
                return o.Invoke(methodName, types, args);
            }
    
            public static object Invoke(this object o, string methodName, Type[] types, params object[] args)
            {
                var type = o is Type ? (Type)o : o.GetType();
                var method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null, CallingConventions.Any, types, null);
                if (method == null)
                    method = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
    
                return method.Invoke(o, args);
            }
    
            public static T GetFieldValue<T>(this object o, string name)
            {
                var value = o.GetFieldValue(name);
                if (value != null)
                {
                    return (T)value;
                }
    
                return default(T);
            }
    
            public static object GetFieldValue(this object o, string name)
            {
                var field = o.GetType().GetField(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                if (field != null)
                {
                    return field.GetValue(o);
                }
    
                return null;
            }
    
            public static void SetFieldValue(this object o, string name, object value)
            {
                var field = o.GetType().GetField(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                if (field != null)
                {
                    field.SetValue(o, value);
                }
            }
    
            public static T GetPropertyValue<T>(this object o, string name)
            {
                var value = o.GetPropertyValue(name);
                if (value != null)
                {
                    return (T)value;
                }
    
                return default(T);
            }
    
            public static object GetPropertyValue(this object o, string name)
            {
                var property = o.GetType().GetProperty(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                if (property != null)
                {
                    return property.GetValue(o, null);
                }
    
                return null;
            }
    
            public static void SetPropertyValue(this object o, string name, object value)
            {
                var property = o.GetType().GetProperty(name, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
                if (property != null)
                {
                    property.SetValue(o, value, null);
                }
            }
        }
    }

    Menu工具

    using UnityEditor;
    using Babybus.Framework.ExtensionMethods;
    using UnityEngine;
    
    class DecryptUtility
    {
        [MenuItem("Utility/DecryptFile")]
        static void DecryptFile()
        {
            var inputFile = Application.dataPath + "/950fd1fa-e786-4587-8180-13f83f057c52";
            var key = "b370540fa8321d35e84cedafc7565512b69f06ae73cf07c589db3899a1b0cd4555c11dc3eae8561271d18d9012106263";
    
            var unityEditor = typeof(Editor).Assembly;
    
            var assetStoreUtils = unityEditor.GetType("UnityEditor.AssetStoreUtils");
    
            assetStoreUtils.Invoke("DecryptFile", inputFile, inputFile + ".unitypackage", key);
        }
    }



    这里注意修改inputFile的路径,需要解码的文件名和key值,我的代码对应路径是项目的project文件夹。点击Menu上新增的Utility→DecryptFile,执行上面的代码。进度条读完,一个同名的unitypackage已经生成在目录下了。


    把这个unitypackage文件拷到C:\Users\用户名\AppData\Roaming\Unity\Asset Store-5.x\开发者公司名\插件名\ 

    路径下,Unity内打开AssetStore,可以看见即使文件没有重命名,系统已经识别该文件存在。



    另外笔者实验将不相关的unitypackage重命名靠过来,或低版本的该插件导进来,系统都能识别,结果分别是导入按钮变灰色,及显示更新。key值或许就控制了这些奥妙。



    展开全文
  • Unity3D AssetStore 外部工具下载

    千次阅读 2018-12-03 10:34:20
    Unity3D AssetStore 离线下载 参考https://www.jianshu.com/p/3ceb18e69d11 Unity 商店更新后还是没有很好得解决下载资源失败从头再来得问题。只好查找如何离线下载得文章,在简书上有一篇16年得文章利用反射机制...

    Unity3D AssetStore 外部工具下载

    参考https://www.jianshu.com/p/3ceb18e69d11

    Unity 商店更新后还是没有很好得解决下载资源失败从头再来得问题。只好查找如何离线下载得文章,在简书上有一篇16年得文章利用反射机制调用编辑器解密下载文件得方法,但是因为unity得升级,该方法已经从AssetStoreUtils类里移除了。

    解决方案

    既然已经删除了DecryptFile函数,那反射肯定不行,那是不是可以从反编译得角度出发,找到该函数得实现方式,来直接解压。

    资料查找

    // 参考文档
    https://github.com/jamesjlinden/unity-decompiled
    

    实现

    // 参考文档
    //https://github.com/jamesjlinden/unity-decompiled
    using UnityEditor;
    using System;
    using System.Globalization;
    using System.IO;
    using System.Security.Cryptography;
    
    class DecryptUtility
    {
        [MenuItem("Utility/DecryptFile")]
        static void DecryptFile()
        {
            var inputFile = @"D:\2223333";
            var key = "11122222";
    
            //var unityEditor = typeof(Editor).Assembly;
    
            //var assetStoreUtils = unityEditor.GetType("UnityEditor.AssetStoreUtils");
    
            //assetStoreUtils.Invoke("DecryptFile", inputFile, inputFile + ".unitypackage", key);
    
            DecryptFile(inputFile, inputFile + ".unitypackage", key);
        }
    
        private static void HexStringToByteArray(string hex, byte[] array, int offset)
        {
            if (offset + array.Length * 2 > hex.Length)
                throw new ArgumentException("Hex string too short");
            for (int index = 0; index < array.Length; ++index)
            {
                string s = hex.Substring(index * 2 + offset, 2);
                array[index] = byte.Parse(s, NumberStyles.HexNumber);
            }
        }
    
        public static void DecryptFile(string inputFile, string outputFile, string keyIV)
        {
            byte[] array1 = new byte[32];
            byte[] array2 = new byte[16];
            HexStringToByteArray(keyIV, array1, 0);
            HexStringToByteArray(keyIV, array2, 64);
            EditorUtility.DisplayProgressBar("Decrypting", "Decrypting package", 0.0f);
            FileStream fileStream1 = File.Open(inputFile, System.IO.FileMode.Open);
            FileStream fileStream2 = File.Open(outputFile, System.IO.FileMode.CreateNew);
            long length = fileStream1.Length;
            long num = 0;
            AesManaged aesManaged = new AesManaged();
            aesManaged.Key = array1;
            aesManaged.IV = array2;
            CryptoStream cryptoStream = new CryptoStream((Stream)fileStream1, aesManaged.CreateDecryptor(aesManaged.Key, aesManaged.IV), CryptoStreamMode.Read);
            try
            {
                byte[] numArray = new byte[40960];
                int count;
                while ((count = cryptoStream.Read(numArray, 0, numArray.Length)) > 0)
                {
                    fileStream2.Write(numArray, 0, count);
                    num += (long)count;
                    if (EditorUtility.DisplayCancelableProgressBar("Decrypting", "Decrypting package", (float)num / (float)length))
                        throw new Exception("User cancelled decryption");
                }
            }
            finally
            {
                cryptoStream.Close();
                fileStream1.Close();
                fileStream2.Close();
                EditorUtility.ClearProgressBar();
            }
        }
    }
    
    展开全文
  • Unity assetstore一些好的资源

    千次阅读 2017-05-03 18:15:42
    https://www.assetstore.unity3d.com/en/#!/content/16318 一个可以拿剑,带帽子,穿衣服的资源,衣服,可以把Skin的骨胳用父骨胳来控制动画..Eye Advanced (5星) https://www.assetstore.unity3d.com/en/#!/content...

    .UMotion Pro - Animation Editor (5星)
    https://assetstore.unity.com/packages/tools/animation/umotion-pro-animation-editor-95991
    一个可以编辑动画的插件

    .Gaia (5星)
    https://assetstore.unity.com/packages/tools/terrain/gaia-42618
    一个快速编辑地形插件

    .CTS - Complete Terrain Shader (5星)
    https://assetstore.unity.com/packages/tools/terrain/cts-complete-terrain-shader-91938
    让你的场景地形更完美表现

    .AQUAS Water/River Set(5星)
    https://assetstore.unity.com/packages/tools/particles-effects/aquas-water-river-set-52103
    水,和上面的Gaia,CTS同一个作者

    .Mount Points (5星)
    https://www.assetstore.unity3d.com/en/#!/content/16318
    一个可以拿剑,带帽子,穿衣服的资源,衣服,可以把Skin的骨胳用父骨胳来控制动画.

    .Eye Advanced (5星)
    https://www.assetstore.unity3d.com/en/#!/content/30762
    仿真眼球,可以改眼瞳和瞳孔的颜色,大小等.

    .Realistic Eye Movements (5星)
    https://www.assetstore.unity3d.com/en/#!/content/29168
    一个模拟眼球转动和眨眼的脚本,很逼真

    .Mesh Animator (5星)
    https://www.assetstore.unity3d.com/en/#!/content/26009
    一个用来压缩动画,减少动画带来的CPU负载的插件.

    .Cloud System (5星)
    https://www.assetstore.unity3d.com/cn/#!/content/1763
    一个看起来不错的云

    .Volumetric Fog & Mist (5星)
    https://www.assetstore.unity3d.com/en/#!/content/49858
    动态的FOG,做云也很不错

    .TerrainComposer 2
    https://www.assetstore.unity3d.com/cn/#!/content/65563
    地形编辑器.

    .WorldComposer (5星)
    https://www.assetstore.unity3d.com/en/#!/content/13238
    一个用于卫星地图来获取地形等编辑器。回头研究下。

    .Relief Terrain Pack v3.3 (5星)
    https://www.assetstore.unity3d.com/cn/#!/content/5664
    一个不错的地形

    .Planetary Terrain v2 (4星)
    https://www.assetstore.unity3d.com/en/#!/content/13418
    一个星球制作

    .Advanced Foliage Shader v.4 (4星)
    https://www.assetstore.unity3d.com/cn/#!/content/3253
    一个树和草的效果材质。回头看看

    .Horizon[ON]
    https://www.assetstore.unity3d.com/en/#!/content/31861
    地平线,看起来地形无限

    .TerraLand
    https://www.assetstore.unity3d.com/cn/#!/content/8306
    一个真实地形获取器,和TerrainComposer 2类似

    .Multiple Terrain Brush
    https://www.assetstore.unity3d.com/cn/#!/content/44037
    一个在多个地形上用刷子刷的工具,能处理接缝

    另外在Unity中下载后,包的原始下载就在下面的路径中查找
    Win7系统:C:\Users\系统用户名\AppData\Roaming\Unity\Asset Store

    展开全文
  • UnityAsset Store里面下载的资源存放在 C:\Users\Administrator\AppData\Roaming\Unity\Asset Store (里面的内容不定期更新) 【Unity资源】(贴图和材质) 【Unity资源】(Shader) 【Unity资源】(粒子系统) ...

    请支持正版,该系列文章资源均为免费,用作分流,查找资料。请勿侵犯他人的版权。

    如果该文章侵犯到您的权益,请及时主动留言联系,我们将及时删除相关内容。

    如果您也想为UNITY免费资源的分流出力,请及时留言和博主联系,我们将尽快更新文章以及相关资源。


    Unity的Asset Store里面下载的资源存放在

    C:\Users\Administrator\AppData\Roaming\Unity\Asset Store


    (里面的内容不定期更新)


    网络分流,请支持正版。


    -----------------------贴图材质&Shader

    【Unity资源】(贴图和材质)

    【Unity资源】(Shader)

    【Unity资源】(粒子系统)

    【Unity资源】(动作/双足)

    -------------------------模型

    【Unity资源】(模型/人形)

    【Unity资源】(模型/交通工具)


    -------------------------模型---道具

    【Unity资源】(模型/道具)


    -----------------模型/人物动作

    【Unity资源】(动作/双足)



    -----------------------脚本

    【Unity资源】(脚本/实用工具)

    【Unity资源】(脚本/AI)



    -----------------------完整项目

    【Unity资源】(完整项目/样板)



    -----------------------编辑器拓展

    【Unity资源】(编辑器扩展/建模)

    【Unity资源】(插件/摄像机)



    -----------------------声音

    【Unity资源】(声音)











    展开全文
  • https://assetstore.unity.com/lists/top-free-packages-13201
  • 独立开发有些年头了,一直在用Unity开发游戏。经过几年的摸索与实践,从最初的小白,跟着教程学习NGUI的使用,到可以自己设计出很棒的UI;从第一款游戏花了大半年时间,到后来依据工程大小与难度1~3个月从想法到上线...
  • 打开Unity Asset store,登陆自己的Unity ID 搜索自己想要的资源,比如"material",可以调整价格区间或直接选择免费资源 点击自己想要的资源,点击添加至我的资源(这里需要注意是否兼容自己的Unity版本),免费资源...
  • Press Control-9 (Windows) or Cmd-9 (OSX) to launch the Unity Asset Store browser 按Control-9(Windows)或Cmd-9(OSX)启动Unity Asset Store浏览器 Wow. Over the last two weeks we’ve launched an ...
  • Unity AssetStore打不开怎么办

    千次阅读 2020-03-29 00:09:31
    Unity AssetStore打不开怎么办 以前的UnityAssetStore可以在网页端下载,现在不知道为什么必须得在Unity里边才能打开,设计师脑子怕不是抽风了… 在网页端选好资源后,点open in unity,结果引擎里根本没反应。 一番...
  • UniWebView是一个Unity 3D插件,用于将Web视图组件添加到Unity 3D手机游戏中。 需要Unity 5.6.3 或更高版本 UniWebView supports running: iOS 9.0 or above Android 5.0 (API Level 21) or above
  • 本人用的Win10,查看各种网页发现都难以找到 ...\AppData\Roaming\Unity\Asset Store 后面发现AppData是隐藏的文件夹,因而要在查看选项勾选隐藏的项目才能找到AppData。 如下所示 ...
  • Win系统的路径 C:\Users\用户名字\AppData\Roaming\Unity\Asset Store-5.x\ 转载于:https://www.cnblogs.com/vingeart/p/5571636.html
  • Unity Asset Store付费的三种动物:老虎,狼,鹿的低多边形模型和动画 文件包含内容: Poly Art Deer 1.3.unitypackage Poly Art Tiger.unitypackage Poly Art Wolf 1.3.1.unitypackage
  • Unity assetstore资源商店 地址

    千次阅读 2020-01-10 16:22:19
    https://assetstore.unity.com/ FR:徐海涛(hunk xu) QQ技术交流群:386476712
  • Unity Assetstore】上传插件 最近做了一个Unity插件,需要上传到UnityAssetStore,因此记录一下。 Publisher 第一步要先将自己的普通Unity账号转换成Publisher–就是能够上传Unity商店的账号。 打开网址 ...
  • Unity Asset Store 插件 Curvy v2.0.3 ,曲线编辑好用的工具
  • Unity3d Asset Store 打不开

    千次阅读 2015-01-05 19:15:00
    Win7管理员身份运行unity project面板上搜索资源名字:比如uEventDispatcher(免费) 选Asset Store 搞定~ 转载于:https://www.cnblogs.com/Uinkanade/p/4204367.html
  • Unity2018 Asset store下载目录 保存路径

    千次阅读 2018-05-13 13:19:12
    Unity Asset store下载package资源windows下的保存路径为:C:\Users\(自己的用户名)\AppData\Roaming\Unity\Asset Store,如下图所示:如果在C:\Users\(自己的用户名)下找不到AppData文件,可以在查看中勾选...
  • Unity Asset Store更新!

    2020-09-10 23:47:47
    Hey there, Caitlyn Meeks here – your Unity Asset Store content manager! In case you haven’t heard, the Unity Asset Store is your in-editor drag-and-drop one-stop prop-shop, packed with models, ...
  • 上篇文章着重介绍了Unity Asset Store(Unity资源商店)上一些超棒的资源与素材。unity老司机的资源推荐与常用插件汇总合集 - 简书Unity插件资源购买小技巧 - 简书本篇文章会从插件的角度,分下面七个个类别(网络联机...
  • 6种造型的进度条,AssetStore绝版付费下载,满足现有的进度条需求。
  • Unity的购买银行卡支持三种支付方式:Visa、masterCard、Discover 网银支持paypal 但是这种凡是可以使用银联支付,我们一般的卡能够通过这种方式来支付 THISSKY出品,原文链接:...
  • asset store 打不开 空白 1.打开代理 2.在工程设置那里,player设置那里Use Direct3D 11*那里不要勾选 3.保证 Unity Editor 登入账号
  • assetstore下载的东西目录: C:\Users\Cxxxx\AppData\Roaming\Unity\Asset Store-5.x\Unity Technologies 例如: 标准资源包目录; C:\Users\Cxxx\AppData\Roaming\Unity\Asset Store-5.x\Unity Technologies\...
  • LCPrinter - Simple Texture Printer Unity调用打印机服务,Asset Store插件
  • unityAsset Store下载的资源保存位置

    千次阅读 2020-03-15 18:52:03
    Windows系统 :“C:\Users\你的登录用户名\AppData\Roaming\Unity\Asset Store-5.x” 备注:Appdata文件夹默认隐藏,需显示隐藏文件夹才可看到。
  • 查看:https://blog.csdn.net/bulademian/article/details/78784059
  • 关于Unity Asset Store Publish如何发布资源的简单记录关于Unity Asset Store Publish我们应该做什么? 关于Unity Asset Store Publish 国人很少用正版,关于如何发布Unity Asset Store竟然也没有多少介绍,结合自己...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,202
精华内容 2,080
关键字:

assetstoreunity