精华内容
下载资源
问答
  • - This Asset is easy to implement the ability to send mail by using the Simple Mail Transfer Protocol (SMTP). - Mail is sent asynchronously. - You can cancel the transmission while transmitting. - You...
  • Materialization FX 1.0 unity3d asset Unity插件下载 3d游戏开发 插件详情: 溶解 资源版本: V1.0 unity版本: 官方推荐Unity版本号:Unity5.5.1 or higher
  • asset store 打不开 空白 1.打开代理 2.在工程设置那里,player设置那里Use Direct3D 11*那里不要勾选 3.保证 Unity Editor 登入账号

    asset store 打不开 空白 

    1.打开代理
    2.在工程设置那里,player设置那里Use  Direct3D  11*那里不要勾选

    3.保证 Unity Editor 登入账号

    展开全文
  • Unity Asset 详解

    2020-06-19 17:06:28
    异步至少要比同步慢至少一帧

    异步至少要比同步慢至少一帧

    展开全文
  • 深入了解Unity资产管道的技术 此仓库包含在Develop Conference:2018上展示的Unity项目。 涵盖的主题 资产,对象和Unity的导入管道 什么是.meta文件以及它们如何工作 资产参考和依赖关系如何表示 Library / metadata...
  • 深入Unity资源(Asset

    2019-10-08 18:34:40
    Unity资源统称为Asset。本节讨论四个话题:AssetUnity.Object 的概念和内涵;File Guid, local ID 和 Instance ID的由来;MonoBehavior, ScriptableObject 和普通 c# 类的区别和应用场景;Unity.Object的资源...

    Unity资源统称为Asset。本节讨论四个话题:Asset 和 Unity.Object
    的概念和内涵;File Guid, local ID 和 Instance ID的由来;MonoBehavior, ScriptableObject 和普通 c# 类的区别和应用场景;Unity.Object的资源生命周期(主要是加载和卸载)。

    (一)Asset 和 Unity.Object

    官方详解

    Asset

    • 泛指Unity可识别的资源文件,据可依具体分成 Native Asset 和 Non-Native Asset

      Native:
      拥有可以被 Unity 直接识别的格式,例如MAT文件
      Non-Native:
      外部资源,需要导入(import)才能被Unity识别,例如FBX文件,PNG文件等等

    • 每个Asset文件具有全局唯一的File Guid,存放在相应的**“.meta”文件**中

      这里有一个搜索某个Asset被哪里引用的小技巧:根据guid,用 notepad++ 对Asset文件夹做全文搜索即可(Ctrl+SHift+F

    • None-Native资源的meta文件中记载了其使用了哪种 Importer

      例如,PNG用的是TextureImporter,FBX用的是ModelImporter,cs代码用的是MonoImporter,shader文件用的是ShaderImporter,等等。很多默认用的是DefaultImporter。也可以自定义一些Importer,继承AssetImporter。

    • 所有资源Import后暂存在Library/metadata文件夹中,这样就不用每次打开编辑器都进行耗时的导入操作(例如纹理压缩)

    Object

    • 一个或多个Object共同描述了序列化了的资源的实例。也就是说,Object是序列化了的,需要经过实例化,才会加载到内存中。

    • 一个Asset里面有多个Object,内部以localID(或叫FileID)区分

      常见 Object如:Sprite, Texture, AudioClip, Material, Motion, GameObject, Component等等。特殊的两个:MonoBehaviorScriptableObject

    • 只有 Unity.Object 及其子类,才可以在 Unity 编辑器中拖放。

    • 只有 Component 及其子类,才可以附着到gameObject上。代码中访问的Component对象不可单独存在,必须要附着在某个gameObject上。

    为什么访问`tranform`的字段那么耗时?

    首先,this.transform 等同于 GetComponent<Tranform>(),遍历多个组件找到第一个Tranform本身就不快。

    例如 transform.position,在访问到transform后,需要遍历该对象在Hierachy中的所有父节点,计算出全局坐标。若要改变这个字段,也会遍历Hierachy,因为保存的是相对父节点的局部坐标。然后会向所有Componenets发送消息。

    (二)File Guid, local ID 和 Instance ID

    首先,为了能用文本编辑器查看资源内部结构,需进行如下操作:

    Edit->Project Settings->Editor ->Assets Serialization,选择 force text

     

    我们已经知道,每个文件有全局唯一的File Guid。一个文件中有多个Object,每个Object有文件中唯一的local Id。所以,每个Object的全局唯一标识为File Guid + local Id。Unity编辑器会自动将文件路径和 FileGuid的映射关系保存在一张表里。

    一个典型的Object(Monobehavior)的描述如下:

    --- !u!114 &114105719140368892
    MonoBehaviour:
      m_ObjectHideFlags: 0
      m_PrefabParentObject: {fileID: 0}
      m_PrefabInternal: {fileID: 100100000}
      m_GameObject: {fileID: 1612640623411334}
      m_Enabled: 1
      m_EditorHideFlags: 0
      m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
      m_Name: 
      m_EditorClassIdentifier: 
      m_UiScaleMode: 1
      m_ReferencePixelsPerUnit: 100
      m_ScaleFactor: 1
      m_ReferenceResolution: {x: 800, y: 600}
      m_ScreenMatchMode: 0
      m_MatchWidthOrHeight: 0
      m_PhysicalUnit: 3
      m_FallbackScreenDPI: 96
      m_DefaultSpriteDPI: 96
      m_DynamicPixelsPerUnit: 1

    第一行,& 符号后面的数字就是这个Object的local id。

    那为什么还需要什么Instance ID呢?

    官方给出的解答是:访问起来更快。

    While File GUIDs and Local IDs are robust, GUID comparisons are slow.
    Unity internally maintains a cache that translates File GUIDs and Local IDs into simple integers that are unique only during a single session

    当一个新的Object被注册到cache中,其自动获得一个Instance ID。具体来说,启动时,Unity会载入场景和所有Resource目录下的Objects,为其分配InstanceID。如果动态加载或卸载AssetBundle,Unity会生成或删除为其分配的InstanceID。所以,重新载入同一个AB包,获得的InstanceID不可保证相同。

    (三)MonoBehavior, ScriptableObject 和普通 c# 类

    从上一节对Monobehavior类型的Obejct的描述可以看到,其有一个对MonoScript的引用。Monoscript包含的信息很简单:

    • assembly name
    • class name
    • namespace.

    构建工程时,Unity会将Asset文件夹里面所有的脚本打包进程序集里。与其他资源不同,程序集在应用启动时就全部载入了

    每种语言有不同的程序集。例如Assembly-CSharp.dll;Plugin里面也会单独打进一个程序集Assembly-CSharp-firstpass.dll

    由此可以想到,对于AB包来说,里面其实不含任何的c#代码资源,只有指向这些预先生成的dll文件的引用

    c#代码可以分为三种,继承Monobehavior的,继承ScriptableObject的,以及c#原生的。其应用场景和区别如下:

    • 只有Monobehavior继承了component类,才可以往gameObject上挂。

    • 不需要挂在gameObject上,比如只为了存数据,可以用ScriptableObject或c#原生类。

    • 接上一条,若要求可序列化,则只有用ScriptableObject。

    • ScriptableObject与c#原生类的区别还在于:前者是一种Unity的资源,需要通过DestroyResources.UnloadUnusedAssets()来释放,其不归c#的GC管理。(相关讨论

    (四)Unity.Object的资源生命周期

    加载时机

    • 自动加载。 当其Instance ID被“解引用(dereference)”时,若Object还没被加载到内存,则Unity会自动机加载。前文已经说过,与其他资源不同,程序集不是Unity.Obejct,其在应用启动时就全部载入了。
    • 手动加载。 通过脚本创建,或者调用资源加载API的时候。

    解引用的意思是访问引用的对象,不是将引用置为null来解除。

    加载时,会建立起Instance ID到FileGuid和localID的映射。如果这个映射失效了,Unity编辑器里就会显示(Missing),如果丢失的是纹理,则会显示粉红色。

    加载的耗时分布

    • Time to read the source data

      (from storage, from another GameObject, etc.)

    • Time to set up the parent-child relationships between the new Transforms
    • Time to instantiate the new GameObjects and Components
    • Time to awaken the new GameObjects and Components

      对于具有复杂层级的gameObject,后三项的耗时甚至可以忽略。这是因为在序列化gameObject时,即使对于重复的元素,unity也会重复地将其序列化。所以在反序列化时,有一个优化就是将重复的元素另保存成一个prefab,然后动态实例化,拼接成一个大的gameObject。

    卸载时机

    • 切换场景;调用Resources.UnloadUnusedAssets之类的API。这种会将没有用到的对象卸载(注意:没有用到是指c#代码没有其引用且unity里没有其他Object引用到它。例如下面不会卸载掉MyPrefab资源,要obj=null后才行)。

      Object obj = Resources.Load("MyPrefab");
      GameObject instance = Instantiate(obj) as GameObject;
      Destroy(instance);
      Resources.UnloadUnusedAssets();
    • Resources文件夹里面的资源在Resources.UnloadAsset后卸载,但保留InstanceID到FileGuid和localID的映射,当mono或别的object持有该对象的引用并解引用时,该对象会自动重新加载。

    • AssetBundle里面的资源在AssetBundle.Unload(true)后立即卸载,并且所有访问其的引用会抛出异常!

    • AssetBundle.Unload(false), compressed file data for assets inside the bundle will be unloaded, but any actual objects already loaded from this bundle will be kept intact. Of course you won't be able to load any more objects from this bundle.
    • AssetBundle.Unload(true), all objects that were loaded from this bundle will be destroyed as well. If there are game objects in your scene referencing those assets, the references to them will become missing.
    展开全文
  • UnityStudio(AssetStudio)X64.v0.10.0.69中文汉化版 : 这款AssetStudio(原名:Unity Studio)汉化版,是专为Unity打造的调试软件,功能强大。解包asset格式文件
  • AssetGraph - 好用的、用來針對AssetBundle打包的可視化工具。
  • unity配置.asset文件

    千次阅读 2018-09-12 20:44:47
    unity配置数据可以XML,可以JSON,unity自带的 .asset文件也可以哦,而且能配置的数据类型也比较多。这里说明一下怎么在unity中生成 .asset文件。 首先来个脚本: using System; using System.Collections; using ...

    unity配置数据可以XML,可以JSON,unity自带的 .asset文件也可以哦,而且能配置的数据类型也比较多。这里说明一下怎么在unity中生成 .asset文件。

    首先来个脚本:

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public enum BulletType
    {
        smallDestroy,
        midDestroy,  
        bigDestroy,
    }
    //类继承自ScriptableObject
    public class BulletTest : ScriptableObject {
    
        public BulletType bulletType = BulletType.midDestroy;
        [Range(10,100)]
        public int speed = 50;
    
        public int damage = 20;
    
        public GameObject damageEffect;
    
        public Sprite mySprite;
    
        public AudioClip audioClip;
    
        public Texture myTexture;
    
        public Vector3 position;
    
        public List<string> list;
    
        public AudioSource audioSource;
    
        public AutoSail aa;
    
        public MovieTexture moiveTexture;
        [System.Serializable]
        public class TestClass
        {
            public string name = "likang";
            public int level = 99;
            public float attack = 500;
        }
        public TestClass test;
    }
    

    再建一个editor脚本用来生成.asset文件:

    using UnityEngine;
    using UnityEditor;
    using System.IO;
    public class AssetTest : Editor {
    
        [MenuItem("CreateAsset/king")]
        static void Create()
        {
            //创建一个ScriptableObject的实例
            ScriptableObject bullet = ScriptableObject.CreateInstance<BulletTest>();
    
            if (!bullet)
            {
                Debug.LogError("bulletTest not found");
                return;
            }
            string path = Application.dataPath + "/BulletFolder";
    
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);//创建指定目录
            }
            //后缀必须是.asset ; 文件名必须和类名一致
             path = string.Format("Assets/BulletFolder/{0}.asset", typeof(BulletTest).ToString());
    
            AssetDatabase.CreateAsset(bullet,path); //在指定路径下创建一个asset配置文件
        }
    
    }
    

    生成后的.asset文件如下:
    。。。
    这里写图片描述

    然后就可以再其他地方用这个.asset配置文件了,注意因为最上面的脚本继承自ScriptableObject,而不是Monobehaviour,所以在unity运行时修改的数据不会在unity停止运行后恢复到原本模样(这个对于微调某些数据来达到最佳效果时还是有用的)。

    懒人引用.asset文件:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class TestOne : MonoBehaviour {
    
        public BulletTest bullet;
    
        // Use this for initialization
        void Start ()
        {
            Debug.Log(bullet.damageEffect);
            Debug.Log(string.Format("sprite:{0};texture:{1};audioclip:{2}",bullet.mySprite,bullet.myTexture,bullet.audioClip));
        }
    }
    
    展开全文
  • unity asset studio

    2019-03-11 14:04:17
    asset studio 0.12.45最新版的。要更新的,去github上面下载吧
  • Unity Asset Cleaner

    2018-10-24 11:58:31
    Unity项目中,我们习惯将所有的资源统称为AssetAsset一般存放在Assets目录及其子目录。随着项目的研发进度,Asset数量也会爆发式地增长,资源管理面临很大的挑战。如何查找并区分有效和无效的资源,是很多项目...
  • Texture _volumeBuffer = new Texture3D(256, 256, 128, TextureFormat.ARGB32, false); AssetDatabase.CreateAsset(_volumeBuffer, "Assets/kkk.asset"); AssetDatabase.SaveAssets(); ...
  • AssetStudio v0.14.38 Unity资源查看工具 从0.9以来更新的东西太多了,就提下主要的两个东西吧 支持动画导出(legacy, generic) 支持Unity版本到2018.2 说说目前动画导出几种方法,直接Export selected objects...
  • 比SVN好用多的团队开发神器,官网已下架,找了好多朋友才找到,分享给大家!
  • u3d/unity3d 使用原生高清字体Text-TextMeshPro组件(非Text组件) 创建字体库使用的汉字表 亲测好使。
  • 使用AssetDatabase.CreateAsset(UnityEngine.Object asset, string path)新建资源时: 路径path使用:application .datapath +"/xxx/xxx",实际路径会是“E:/asdf/asdfasdf/Assets/xxx/xxx”,这样就会报错“Couldn'...
  • 自从UnityStudio改名为AssetStudio后就没发过更新的文章了,主要是从0.9以来更新的东西太多了,就提下主要的两个东西吧 1.支持动画导出(legacy, generic) 2.支持Unity版本到2018.2 说说目前动画导出几种方法,直接...
  • Unity资源】Asset Store免费资源分享总览-附件资源
  • unity ..assetToday we’re excited to have released Unity Asset Server 2.0! This is a free update for all existing users of the Unity Asset Server and it offers the following new features: 今天,我们...
  • Unity创建 .asset配置文件的方式

    千次阅读 2019-08-07 15:52:14
    创建脚本CreateAsset > 继承ScriptableObject > 添加CreateAssetMenu特性; using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu] public class CreateAsset ...
  • Asset Hunter 2 2.4 很不错的Unity废资源清理插件,只需1积分 这个插件是利用打包日志,分析哪些资源有用、哪些无用,进而清理的工具 对比了其它一些插件,准确率高。 缺点:你的 assetbundle 资源源文件,不会计算...
  • 这款AssetStudio(原名:Unity Studio)汉化版,是专为Unity打造的调试软件,功能强大。解包asset格式文件。
  • AssetStudio unity解包工具
  • 可以轻松为您找到所有资源的 用法/依赖关系/参考的资产 在项目,场景和嵌套式预制舞台中
  • Unity加载Asset Bundle

    2018-07-30 16:21:08
    Unity加载Asset Bundles,内含服务器,加载资源的四种方式
  • Unity Asset文件

    千次阅读 2019-08-11 10:11:22
    Asset文件类型 Asset文件使用方法 Unity 使用自定义资源(.asset)配置数据
  • unity Asset Server 2.0.1

    2018-07-04 10:44:56
    Asset Server是Unity内部自带的资源版本管理工具,类似于SVN。但对于小项目来说Asset Server要比SVN好用一些,更加直观,能看清资源类型。目前官方已经停止支持更新。
  • Unity Asset Store 插件 Curvy v2.0.3 ,曲线编辑好用的工具
  • Unity Asset Store付费的三种动物:老虎,狼,鹿的低多边形模型和动画 文件包含内容: Poly Art Deer 1.3.unitypackage Poly Art Tiger.unitypackage Poly Art Wolf 1.3.1.unitypackage
  • https://assetstore.unity.com/lists/top-free-packages-13201

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,725
精华内容 6,690
关键字:

assetunity