最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结编辑器模式下的资源管理方法,方便自己回顾. ① 加载/卸载资源 using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; // 这个文件在手机上没有,需要使用条件编译 #endif public class…
开发环境 windows 7 Unity 5.3 及更高版本 前言 使用AssetDatabase.Load或AnimatorController.CreateAnimatorControllerAtPath等Unity内置Editor API进行文件操作时,经常碰到加载资源为null,或报路径不存在! 经过断点调试,发现绝大部分错误都是因为路径的分隔符存在两种:"/"和"\". 我们使用 System.IO.Path 这个API得到的路径,其实也是以"\…
用Visual Studio写shader实在蛋疼,那可能就会有人要问了,为啥不用插件可视化制作shader呢?因为我是新手,新手还是老老实实敲代码,慢慢来- 所以试着在网上找找,有没有类似的插件或者编辑器,被我找到了,也基本符合我的要求. 我想实现的效果如下:双击xxx.shader打开Sublime Text,可在Sublime Text中对常用的函数进行提示,并支持函数的跳转. 这就分为二个功能: 1.双击shader文件打开Sublime Text: 2.使用Sublime Text来编…
版权声明:本文为博主原创文章,转载请注明出处. 打开Unity编辑器的主窗口,在窗口的右上角可以看到有个“Layout”按钮.这是用来对Unity编辑器主窗口上面的各个窗口面板进行布局的.通常情况下我个人比较习惯使用“2 by 3”的布局方式,所以,我会将Layout设置成该布局. 然后我们可以看到如上图所示的布局.  该布局在主窗口左边竖排两个面板,从上到下分别是“Scene”和“Game”.Scene面板用来可视化编辑游戏场景,可以多游戏内部的物体对象进行布置或者说是布局.而Game视图可以…
这是我在2017金山技术开放日分享的部分内容.从贴图资源格式配置的介绍开始,引申出资源配置工具,最后再谈谈一整套项目资源管理方案.在GitHub上可以获取到资源配置工具的代码,是基于下面理念的一份简单实现. 一个3D游戏项目中的资源主要由贴图.模型.动作.声音等组成.模型设计师设计模型,场景由模型组成,角色不仅是一个精致的模型还带了各类的动作,包括走路.跑步.待机.攻击等等.各类基础资源构成了游戏的大部分元素. 在我做的剑侠世界手游项目里面有上万的材质,主城更是有7000+的模型.每个角色可以有…
最近学习了Unity自定义编辑器窗口,下面简单总结,方便用到时回顾. 新建一个脚本: using UnityEngine; using System.Collections; using UnityEditor; /// <summary> /// 自定义的编辑器窗口 /// </summary> public class MyWindow : EditorWindow { string myString = "Hello World !"; // 文本内容 b…
在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简单了解下UnityEditor部分的内容. 编辑器最最基本的用法呢就是编辑Inspector. 而Inspector中最最基本的就是把字段显示出来.给几个例子: [code]csharpcode: using UnityEngine; using System.Collections; // 这里没…
使用Rider做的编写Unity代码的IDE,记录一些与VS不相同的笔记 安装和设置方法: 我使用Rider 2019.1 + Unity3D 2018.3.4,在安装完Rider之后,在Unity中选择Rider做为脚本编辑器,然后在Unity中双击代码就可以跳转到Rider中,Rider会自动在Unity工程中导入调试的dll. Rider的使用笔记 从进程中来看,Rider中包含了一个Resharper 转到定义快捷为Ctrl +B 文件会自动保存,这样在写完代码后,Unity就会自动编译…
此篇文章准备了将近两周的时间,写了改,改了删.之前有朋友反馈,上一个文章太冗长了,影响阅读体验,这一讲就走个精简路线.所以只要不是很重要的内容就都删减掉了. 文章分两个部分,第一部分是原理,第二部分是实战. 原理部分,初学者尽量去理解就好,不用跟着敲,列出的代码都是示意代码. 实战部分是留给初学者的,希望敲完代码,这样有助于理解前边的原理. 当然原理不是很难. 第一部分:原理 ResKit 中值得一说的 Feature 如下: 引用计数器 可以不传 BundleName 当然也有很多不值得一提的…
AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”).直观地说就是管理整个project窗口中的所有内容,比如,你可以增加.删除.修改文件等等. 这里有几个常常用到: CreateAsset:创建文件 CreateFolder:创建文件夹 DeleteAsset:删除文件 GetAssetPath:获取文件相对于Assets所在目录的相对位置,如“Assets/Images/test.png” LoadAssetAtPath:加载文件 Refresh:刷…