精华内容
下载资源
问答
  • 此文为转发,如果有看不懂的直接...本篇Unity3d教程我们继续学习下如何制作利用AssetBundle来打包制作我们的数据文件,并在游戏中读取AssetBundle数据文件 由于我们要将模型资源放在远程的服务器端,但如果直接放fbx模

    此文为转发,如果有看不懂的直接看我之前一篇灰常初级的教程然后再来看这篇。初级地址http://blog.csdn.net/alayeshi/article/details/52885735

    本篇Unity3d教程我们继续学习下如何制作利用AssetBundle来打包制作我们的数据文件,并在游戏中读取AssetBundle数据文件
    由于我们要将模型资源放在远程的服务器端,但如果直接放fbx模型是不可以加载的,所以我们可以将fbx做成预设或者是直接将其打包成assetbundle格式的,然后通过www来加载获取。
    说下使用方法:

    1、把附件脚本放到工程文件夹下的…\Assets\Editor文件夹下。

    2、在工程的Project视图里点击想要保存的资源,网络上推荐的是Prefab,右键点击,选择菜单里最下面的两个选项任意一个都可以,第一个选项对应的自定义属性有一个过期了,但是不影响使用。

    3、指定文件的构建路径和文件后缀,后缀无所谓。

    4、推荐制造做法:

    任何形式的资源都可以,包括集合资源,比如创建一个空的GameObject,把所有想要关联的其他GameObject都拖进去,然后在project视图里创建一个prefab,将这个集合资源GameObject拖进去作为一个prefab。执行上面的第2、3步骤。
    官方的讲解:http://game.ceeger.com/Script/BuildPipeline/BuildPipeline.BuildAssetBundle.html
    1.首先要讲一下不同平台下的一个StreamingAssets路径,这是不同的。

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
    public static readonly string PathURL =
    #if UNITY_ANDROID   //安卓
    "jar:file://" + Application.dataPath + "!/assets/";
    #elif UNITY_IPHONE  //iPhone
    Application.dataPath + "/Raw/";
    #elif UNITY_STANDALONE_WIN || UNITY_EDITOR  //windows平台和web平台
    "file://" + Application.dataPath + "/StreamingAssets/";
    #else
    string.Empty;
    #endif

    这就获取到了不同平台的一个路径,我们可以将打包的文件放在这些路径下,然后再从这路径去读取资源。

    2.关于打包assetbundle的脚本

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    using UnityEngine;
    using System.Collections;
    using UnityEditor;
     
    public class Test : Editor
    {
    //打包单个
    [MenuItem("Custom Editor/Create AssetBunldes Main")]
    static void CreateAssetBunldesMain ()
    {
    //获取在Project视图中选择的所有游戏对象
    Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);
     
    //遍历所有的游戏对象
    foreach (Object obj in SelectedAsset)
    {
    //本地测试:建议最后将Assetbundle放在StreamingAssets文件夹下,如果没有就创建一个,因为移动平台下只能读取这个路径
    //StreamingAssets是只读路径,不能写入
    //服务器下载:就不需要放在这里,服务器上客户端用www类进行下载。
    string targetPath = Application.dataPath + "/StreamingAssets/" + obj.name + ".assetbundle";
    if (BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies)) {
    Debug.Log(obj.name +"资源打包成功");
    }
    else
    {
    Debug.Log(obj.name +"资源打包失败");
    }
    }
    //刷新编辑器
    AssetDatabase.Refresh ();
     
    }
     
    [MenuItem("Custom Editor/Create AssetBunldes ALL")]
    static void CreateAssetBunldesALL ()
    {
     
    Caching.CleanCache ();
    string Path = Application.dataPath + "/StreamingAssets/ALL.assetbundle";
     
     
    Object[] SelectedAsset = Selection.GetFiltered (typeof(Object), SelectionMode.DeepAssets);
     
    foreach (Object obj in SelectedAsset)
    {
    Debug.Log ("Create AssetBunldes name :" + obj);
    }
     
    //这里注意第二个参数就行
    if (BuildPipeline.BuildAssetBundle (null, SelectedAsset, Path, BuildAssetBundleOptions.CollectDependencies)) {
    AssetDatabase.Refresh ();
    } else {
     
    }
    }
     
    [MenuItem("Custom Editor/Create Scene")]
    static void CreateSceneALL ()
    {
    //清空一下缓存
    Caching.CleanCache();
    string Path = Application.dataPath + "/MyScene.unity3d";
    string  []levels = {"Assets/Level.unity"};
    //打包场景
    BuildPipeline.BuildPlayer( levels, Path,BuildTarget.WebPlayer, BuildOptions.BuildAdditionalStreamedScenes);
    AssetDatabase.Refresh ();
    }
     
    }

    前提要新手动创建一个StreamingAssets文件夹

    3.读取资源,这里只举例从本地读取,跟从网络读取是一样的,可以参考官方文档:

    http://game.ceeger.com/Script/WWW/WWW.html

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    using UnityEngine;
    using System.Collections;
     
    public class RunScript : MonoBehaviour
    {
    //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
    public static readonly string PathURL =
    #if UNITY_ANDROID
    "jar:file://" + Application.dataPath + "!/assets/";
    #elif UNITY_IPHONE
    Application.dataPath + "/Raw/";
    #elif UNITY_STANDALONE_WIN || UNITY_EDITOR
    "file://" + Application.dataPath + "/StreamingAssets/";
    #else
    string.Empty;
    #endif
     
    void OnGUI()
    {
    if(GUILayout.Button("Main Assetbundle"))
    {
    //StartCoroutine(LoadMainGameObject(PathURL + "Prefab0.assetbundle"));
    //StartCoroutine(LoadMainGameObject(PathURL +  "Prefab1.assetbundle"));
     
    StartCoroutine(LoadMainCacheGameObject(PathURL + "Prefab0.assetbundle"));
    StartCoroutine(LoadMainCacheGameObject(PathURL +  "Prefab1.assetbundle"));
    }
     
    if(GUILayout.Button("ALL Assetbundle"))
    {
    StartCoroutine(LoadALLGameObject(PathURL + "ALL.assetbundle"));
    }
     
    if(GUILayout.Button("Open Scene"))
    {
    StartCoroutine(LoadScene());
    }
     
    }
     
    //读取一个资源
     
    private IEnumerator LoadMainGameObject(string path)
    {
    WWW bundle = new WWW(path);
     
    yield return bundle;
     
    //加载到游戏中
    yield return Instantiate(bundle.assetBundle.mainAsset);
     
    bundle.assetBundle.Unload(false);
    }
     
    //读取全部资源
     
    private IEnumerator LoadALLGameObject(string path)
    {
    WWW bundle = new WWW(path);
     
    yield return bundle;
     
    //通过Prefab的名称把他们都读取出来
    Object  obj0 =  bundle.assetBundle.Load("Prefab0");
    Object  obj1 =  bundle.assetBundle.Load("Prefab1");
     
    //加载到游戏中
    yield return Instantiate(obj0);
    yield return Instantiate(obj1);
    bundle.assetBundle.Unload(false);
    }
     
    private IEnumerator LoadMainCacheGameObject(string path)
    {
    WWW bundle = WWW.LoadFromCacheOrDownload(path,5);
     
    yield return bundle;
     
    //加载到游戏中
    yield return Instantiate(bundle.assetBundle.mainAsset);
     
    bundle.assetBundle.Unload(false);
    }
     
     
    private IEnumerator LoadScene()
    {
    WWW download = WWW.LoadFromCacheOrDownload ("file://"+Application.dataPath + "/MyScene.unity3d", 1);
     
    yield return download;
    var bundle = download.assetBundle;
    Application.LoadLevel ("Level");
    }
    }

    如果assetbundle文件放在服务器端,直接用www.loadfromcacheordownload()通过版本来控制是否从服务器下载并保存到本地。本人亲自测试,这个方法是能下载到本地的,至于下载在本地哪儿我就不太清楚了,我猜测应该是存在沙盒文件下(移动开发者的朋友应该知道),当然也可以自己来做版本控制,那样更灵活,并且摆脱www.loadfromcacheordownload()方法的束缚,貌似这个方法存贮文件是有空间大小限制的,据说是50M,本人没有亲自考证,后期我会自己做一个版本控制!

    好了,本篇unity3d教程到此结束,下篇我们学习如何利用FileStream来读取我们的AssetBundle数据并加载文件!

    展开全文
  • unity如何热更新wwise资源 https://www.audiokinetic.com/qa/5158/unity%E4%B8%AD%E5%A6%82%E4%BD%95%E7%83%AD%E6%9B%B4%E6%96%B0wwise%E8%B5%84%E6%BA%90 安卓和IOS中wwise热更新: 1.用 Wwise 和 Unity 制作 ...

    unity中如何热更新wwise资源

    https://www.audiokinetic.com/qa/5158/unity%E4%B8%AD%E5%A6%82%E4%BD%95%E7%83%AD%E6%9B%B4%E6%96%B0wwise%E8%B5%84%E6%BA%90

    安卓和IOS中wwise热更新:


    1.用 Wwise 和 Unity 制作 DLC,就是pck包。


    2.然后调用 AkSoundEngine.LoadFilePackage()加载pck包,Wwise 将始终尝试先通过文件包加载文件,加载的顺序是以相反的顺序(最后添加的是第一个搜索到的)。注意,AddBasePath不是全平台都有效。在PC下是无效的,所以不能在PC平台测试。


    3.一定要先设置SetBasePath,再设置AddBasePath。


    4.添加AkSoundEngine.SetBasePath(basePathToSet)SetBasePath设置基础目录。包体里面StreamingAssets\GeneratedSoundBanks\Android\


    string fullBasePath = UnityEngine.Application.persistentDataPath+"/Audio/GeneratedSoundBanks/" + AkBasePathGetter.GetPlatformName();
    5.添加持久化目录AkSoundEngine.AddBasePath(fullBasePath);

     

     

     

     

    展开全文
  • 使用Unity 5制作2D游戏 这是与我们的教程“相关的资源库。 它包含了我们的小型演示项目的最终源代码,资产和许可信息,并根据了拍摄。
  • 在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。为此,Unity引擎引入了AssetBundle这一技术来满足开发者的上述需求,一方面,开发者可以通过...

    在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。为此,Unity引擎引入了AssetBundle这一技术来满足开发者的上述需求,一方面,开发者可以通过AssetBundle将游戏中所需要的各类资源打包压缩并上传到网络服务器上;另一方面,在运行时游戏可以从服务器上下载该资源,从而实现资源的动态加载。ok,要实现动态的下载和加载资源,第一步就是先要打包资源。unity使用BuildPipeline.BuildAssetBundles来打包资源。

    打包方法一:

    首先,创建三个Prefab来作为我们想要打包的资源,并创建两个材质球为Prefab上色。


    然后在Assets下创建一个名为Editor的文件夹(此文件夹名不能更改,否则打包失败),并在其中创建打包所用的脚本,命名为AssetBundlesBuild(可随意命名)。


    编辑脚本:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;//必须先引用UnityEditor
    
    public class AssetBundlesBuild : MonoBehaviour
    {
    //在菜单栏中添加一个名为AssetBundles的菜单(可随意命名),并在其下添加一个命名为Build AssetBundles的选项(随意命名)
    [MenuItem("资源包/创建资源包")]
    //创建一个静态方法用来执行打包操作(方法名随意)
    static void aaa()
    {
    //创建一个AssetBundleBuild的类型的数组,因此例中要打包两个资源包,故数组容量为2。
    //这个数组其实是定义了你要打包的资源文件和资源包之间的关系,也就是说将Assets文件夹下的哪些资源文件打包到哪些资源包里面。
    AssetBundleBuild[] buildmap = new AssetBundleBuild[2];
    //将要打包的第一个资源包的名称命名为ZiYuanBao1
    buildmap[0].assetBundleName = "ZiYuanBao1";
    //将要打包的第二个资源包的名称命名为ZiYuanBao2
    buildmap[1].assetBundleName = "ZiYuanBao2";
    //创建一个字符串数组用来指明ZiYuanBao1想要打包的资源文件及其位置,打包文件数既是数组容量
    string[] ziyuan = new string[2];
    //将Prefab1和Prefab2在Assets文件夹下的目录及其名称和文件类型作为字符串赋给字符串数组
    ziyuan[0] = "Assets/Prefab1.Prefab";
    ziyuan[1] = "Assets/Prefab2.Prefab";
    //指明ZiYuanBao1想要打包的资源文件
    buildmap[0].assetNames = ziyuan;
    //创建字符串数组ziyuan2用来指明ZiYuanBao2想要打包的资源文件及其位置,打包文件数既是数组容量
    string[] ziyuan2 = new string[1];
    //将Prefab3在Assets文件夹下的目录及其名称和文件类型作为字符串赋给字符串数组
    ziyuan2[0] = "Assets/Prefab3.Prefab";
    //指明ZiYuanBao2想要打包的资源文件
    buildmap[1].assetNames = ziyuan2;
    //完成打包,输出路径为Assets下的StreamingAssets文件夹(可随意命名,但必须确定存在该文件夹)
    //此行意为:在不对资源包设置任何特殊选项的情况下按照buildmap所指定的文件关系进行打包,资源包目标平台是StandaloneWindows,输出路径是Assets/StreamingAssets
    BuildPipeline.BuildAssetBundles("Assets/StreamingAssets",buildmap, 
    BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
    //刷新资源路径,避免生成的文件不显示
    AssetDatabase.Refresh ();
    }}
    



    可以看到脚本编译完成后,菜单栏多出了一个选项。


    最后执行打包动作,打包完成,指定文件夹下出现了相关资源包文件:


    打包方法二:在方法一中,我们以编写代码的方式为资源文件和资源包指明了打包关系,为了提高效率,unity还提供了另一种方法如下。
    首先,点击想要打包的资源文件,在Inspector视图中设置想要包含此资源文件的资源包名称。如图。


    此处,我们将Prefab1和Prefab2的Assetbundle设置为bundle1,将Prefab3的Assetbundle设置为bundle2,既将Prefab1和Prefab2打包在资源包bundle1里面,将Prefab3打包在资源包bundle2里面。
    然后同样是在Assets文件夹下面创建一个名为Editor的文件夹(此文件夹名不能更改,否则打包失败),并在其中创建打包所用的脚本,命名为AssetBundlesBuild(可随意命名),因为之前已经创建过,故不再次进行创建了。打开脚本,编辑。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    public class AssetBundlesBuild : MonoBehaviour
    {
    //在菜单栏中添加一个名为AssetBundles的菜单(可随意命名),并在其下添加一个命名为Build AssetBundles的选项(随意命名)
    [MenuItem("AssetBundles/Build AssetBundles")]
    //创建一个静态方法用来执行打包操作(方法名随意)
    static void aaa()
    {
    
    //完成打包,输出路径为Assets下的StreamingAssets文件夹(可随意命名,但必须确定存在该文件夹)
    //此行意为:在不对资源包设置任何特殊选项的情况下按照在unity中Inspector视图中所指定的文件关系进行打包,资源包目标平台是StandaloneWindows,输出路径是Assets/StreamingAssets
    BuildPipeline.BuildAssetBundles("Assets/StreamingAssets",
    BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows);
    //刷新资源路径,避免生成的文件不显示
    AssetDatabase.Refresh ();
    }}




    最后执行打包动作,打包完成,指定文件夹下出现了相关资源包文件:


    AssetBundle使用的增量式打包仅重新打包发生变化的资源包,当资源文件或者typetree发生变化时才会重新打包。


    AssetBundle的加载步骤:(注:仅代码,详解见http://blog.csdn.net/oldherowang/article/details/74977908)


    将之前所生成的Ziyuanbao1和ziyuanbao2及其Manifest文件删除。并且把最开始生成的两个材质球打包成bundle3。


    新建脚本,编辑:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DownloadAssetBundle : MonoBehaviour {
    
    
    // Use this for initialization
    IEnumerator Start () 
    {
    WWW w1 = WWW.LoadFromCacheOrDownload("file://" + Application.dataPath + "/StreamingAssets/StreamingAssets", 0);
    yield return w1;
    if (w1.error != null)
    {
    Debug.Log(w1.error);
    }
    else
    {
    AssetBundle abManifest = w1.assetBundle;
    yield return abManifest;
    AssetBundleManifest manifest = abManifest.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
    string[] depend = manifest.GetAllDependencies("bundle1");
    AssetBundle[] depend_ab = new AssetBundle[depend.Length];
    for (int i = 0; i < depend.Length; i++)
    {
    WWW w = WWW.LoadFromCacheOrDownload("file://" + Application.dataPath + "/StreamingAssets/" + depend[i],0);
    yield return w;
    depend_ab[i] = w.assetBundle;
    yield return depend_ab;
    }
    WWW w2 = WWW.LoadFromCacheOrDownload("file://" + Application.dataPath + "/StreamingAssets/bundle1", 0);
    yield return w2;
    AssetBundle Bundle1 = w2.assetBundle;
    AssetBundleRequest request= Bundle1.LoadAssetAsync("Prefab1");//异步加载
    yield return request;
    GameObject obj = (GameObject)request.asset;
    Instantiate(obj, Vector3.zero, Quaternion.identity);
    }
    }
    }
    



    编辑完成后,将脚本挂载到Camera上,运行之后会在场景内见到被加载上来的Prefab1。


    关于下载及加载Assetbundle的详细步骤解析,请见:http://blog.csdn.net/oldherowang/article/details/74977908



    展开全文
  • 这次做的是经典FC游戏坦克大战,相较于我发的前两篇文章这个游戏逻辑相对于比较难,同时要考虑很多事情,所以这篇文章讲的细一点,会分成多个阶段来讲解如何制作,首先就是游戏的基本逻辑,创建一个2D游戏模板,在...

    记学习Unity后第三次做游戏

           这次做的是经典FC游戏坦克大战,相较于我发的前两篇文章这个游戏逻辑相对于比较难,同时要考虑很多事情,所以这篇文章讲的细一点,会分成多个阶段来讲解如何制作,首先就是游戏的基本逻辑,创建一个2D游戏模板,在指定位置生成玩家和敌人,生成玩家和敌人的子弹,玩家和敌人的移动逻辑,生成地图(未实现),由开始界面切换到游戏界面,大致就是这些,既然明白了这些就开始实践吧。
           首先制作场景,一定要提前计划好自己要做多大的地图,例如可以放置几个玩家的身位,都是要刚刚好才是可以的,首先就是要调整摄像机和UI画布的大小和位置,建议此时先把2D场景切换成3D的,这样可以调整摄像机的远近,画布的远近,建议设置如下图。
    摄像机和画布
           其实2D游戏也就是3D游戏去掉了一个Z轴,切换成3D游戏还是可以看到Z轴的,具体的画布设置可看我下面的设置,红框代表一定要这样设置的选项。
    画布设置
           上面的设置里面的分辨率要随着你的场景设置来改,默认的参数忘记是多少了,要根据你的当前分辨率来实时变化,不然启动游戏后设置好的UI会拉伸变形,位置也会变掉,哦对了画布上面的Plane Distance也要设置,否则画布可能会在摄像机前面或者在场景的后面,就会有遮挡UI或者看不到字的情况。
           同样,摄像机上面的组件也是一样,圈了红框的必须要改,但是你可以不像我这样改,根据你场景中设置的UI大小来改变,背景一定要设置成黑色,毕竟原版游戏也是黑色的,我这个地图的Camara Size改的有点小了,导致地图小的很,横向只有11格的移动空间,竖向有12格的空间,走起来很局促,间接影响了游戏体验。
    摄像机设置
           有了素材那素材怎么调呢?推荐的是把素材直接拉到场景里,然后创建一个大小1*1的Cube来进行对比,或者你也可以根据图片的尺寸以及当前缩放比例大概推算出图片在场景中占用多少空间,有了这样设置UI布局会快很多。
           当我们把package加载入资源里的时候,打开Graphics会发现是这样的素材图。
    素材图

           我这边打开是已经被Sprite自动分割好了,如果是没有分割的话,点击素材图,Inspector面板里找到Sprite Editor打开,Inspector下面还有一个竖着的三个点打开,选择下面那个选项就可以打开预览,可以看到预览,此时图片大小为224x224,数出坦克数量为8x8,这样就可以算出每个图片的大小为28x28,在刚才打开的面板里进行如下操作。
    切割图片
           这样就成功的把图片切割出来了,今天先暂时到这里,到这期结束之后我会把工程源码和资源包都以网盘链接发给大家的,谢谢观看,有不对的请大家提出,多多担待。

    展开全文
  • 在Unity的Assets目录下的文件,在游戏运行过程中需要从此目录加载并显示到屏幕上的都可以称之为Unity资源,例如模型、材质、纹理、预制体、脚本、声音、数据文档、动画切片、控制器、着色器、场景等。 2.如何管理...
  • 先是打开unity软件,然后在导入模型资源包,到Resources文件夹,在工程栏区建立几个文件夹,分别是:Prefads(预设体),Resources(资源包),Scence(场景),Texture(图片);Scripts(脚本). 然后在Scripts(脚
  • 我们都知道使用Unity3D引擎制作的游戏在冷启动时会加载一些默认的资源,包括纹理资源、Shader、Mesh等,这些资源都是Unity3D引擎默认需要的。那么我们如何知道这些默认资源到底是哪些呢?为了深入理解这个主题,我们...
  • 特别是开发一些VRAR项目的时候,每次都需要导入一些,对工程做一些配置。那么有没有办法制作一个初始的模板工程,以便我们每次创建工程的时候复用呢? 先说一个最简单的办法:维护一个初始工程,将所需要的初始...
  • 无论美术资源来自何方,画风如何,应该基本包括如下几个层面: 角色信息界面,用于显示主角的装备槽位以及正在穿戴中的装备 背包界面,用于显示主角拥有的物品集合 金钱标签,用于显示主角当前拥有的钱币 商店界面,...
  • Store And Equipment System In Unity3D Introduction 物品元素可以说是所有RPG的必备系统,毕竟,如果没有物品系统就没有消耗,没有消耗哪能骗玩家充钱呢?...无论美术资源来自何方,画风如何,应该...
  • Unity刀光特效

    2016-12-14 17:45:12
    在我的一篇博文里会介绍如何使用unity制作刀光特效,工程中包含代码,游戏模型,场景资源
  • 资源包中的BlobShadowProjector拖入场景,再将要投影的纹理贴图拖放到下图的红框内即可,就这么简单! 但在实际的项目开发中,可能会遇到动态加载纹理贴图的需求,这该怎么做呢? 当然,可以利用material....
  • Unity3D优化技巧系列三

    千次阅读 2017-03-30 16:49:35
    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区...CSDN视频网址:http://edu.csdn.net/lecturer/144 继续优化的技术分享,本篇博客主要是介绍关于美术资源制作要求,以及如何压缩资源优化体。我们知道U
  • Unity】Addressable Assets System 寻址式资源管理系统学习笔记 ...seid=9501846827487133762 学习内容: 如何设计游戏资源加载的迭代设计 如何设计安装包和资源包或DLC的拆离设计 ...如何制作后面添加的资源扩充包
  • Unity UGUI Font Editor

    2018-04-07 16:57:23
    游戏制作中,经常需要使用各种花哨...将里面的数据放置到unity资源目录下,右键点击fnt文件,在右键菜单中选择BatchCreateArtistFont来生成相关的字体文件, fnt文件为BMFont导出的文件,BMFont如何使用请自行百度
  • 简单传送门教学 基于达哥的方法做了一个传送门,纪录一下我的...FPSController在unity官方资源包导入,如果你导入有错误可以看我的另一篇文章:unity官方资源包Standard Assets导入错误 2、建两个虚拟摄像机:Cinem...
  • 今天小生和各位主要一起研究关于如何制作好的Asset Bundle下载下来然后再通过游戏给读取出来。对于打包的讲解请参照[打包篇],小生在本里就不多阐述了。 OK,那就让我们进入正题来探讨一下关于读取打包的知识吧...
  • Unity3D Timeline 工作流

    2020-04-21 13:33:46
    Unity3D Timeline 工作流 ... 一、前言 ...通过本章,你将学会如何创建Timeline,如何用Timeline来制作动画,以及使用humanoid动画等知识。 本章主要包含下列5个小节的内容: 创建Timeline资源和...
  • 1.简介 这是Unity Android APP il2cpp热更完美解决方案的Demo...本文随后将介绍如何制作热更文件和如何应用这些热更文件。为了简化Demo的设计,Demo包含的热更文件会事先以全量更新的方式制作好,一起打到了Apk里面。
  • 拉钩网易Unity面试提问小结

    千次阅读 2018-04-20 16:38:39
    制作的时候需要将图片打入图集后才能进行制作。UGUI:sprite packer的模式。自带的图集打包模式,注意图片不能放在Resources文件夹下面,Resources文件夹下的资源将不会被打入图集,切记。没打包的时候生...
  • 本书以艺术家容易接受的方式介绍了关键的游戏制作概念,并快速讲授了需要在Unity中掌握的基本编程技能。接着本书向你展示了作为一个独立的游戏艺术家,如何在当今的休闲和移动市场范围内创建理想的交互类游戏,同时...
  • 知物由学 | iOS AssetBundle资源保护

    万次阅读 2020-12-18 16:21:49
    AssetBundle是Unity中的一种资源包,这种资源包可以是Unity游戏内要用到的几乎所有资源,例如:模型、贴图、纹理、预设、场景、脚本等。它是资源的一种集合,可以理解为资源的一种压缩包。开发者,通过AssetBundle的...
  • 如何资源进行管理是一个无法避免的问题,Unity本身为了方便资源的更新与控制体,提供了AssetBundle的方式来处理资源,但是对于资源的管理并未给出统一的解决方案,最终形成各个项目组根据项目的的需求进行制作,...
  • 5、五官如何做到像 6、导出规范 7、资源打包设置规范 8、多平台适配标准 1.软件工具 Unity版本号:2017.4.5f1 3DSMax版本号:2016英文版 Maya 版本号:2016英文版 MAX环境设置: 统一配置以cm(厘米)为准,参数...
  • 您可以观看2分钟的视频,了解如何设置ChatdollKit: : aJ0iDZ0o4Es :package: 导入 导入和 导入 :fish: 资源准备 导入3D模型并将其放到现场 将动画剪辑放入动画目录 :backhand_index_pointing_right: 对于教程...
  • (一)AssetBundle的介绍

    千次阅读 2017-02-25 22:31:39
    在很多类型游戏的制作过程中,开发者都会考虑一个非常重要的问题,即如何在游戏运行过程中对资源进行动态的下载和加载。为此,Unity引擎引入了AssetBundle这一技术来满足开发者的上述需求,一方面,开发者可以通过...
  • NGUI下载与导入

    2019-02-13 09:12:17
    1、下载NGUI插件资源包 我原以为NGUI是旧版Unity自带的功能,但我电脑装的2018版Unity,寻思着要不要再下一个旧版的。幸好我不懒,花了点时间搜索才发现NGUI原来是个非官方制作的插件,但这个插件哪里有呢?继续搜...
  • golang 面试题:reflect(反射如何获取字段 tag?为什么 json 不能导出私有变量的 tag? 协程和线程的差别 垃圾回收的过程是怎么样的? 什么是写屏障、混合写屏障,如何实现? 开源库里会有一些类似下面这种...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

如何制作unity资源包