学习Unity3D 开发,有哪些资源

跟我从零基础学习Unity3D开发
我的图书馆
跟我从零基础学习Unity3D开发
经过上一篇的学习,我相信开发环境您已经搭好了,如果还没有搭好可以百度一下。
今天主要讲的有以下几点:
第一:Unity3D中的C#脚本与.net中的C#写法的区别
1.Unity3D C#脚本不支持命名空间.
2.Unity3D C#脚本初始化不要放到构造函数中,而是放到Start()方法中。
3.Unity3D C#脚本 get/set写法属性不被识别,直接public字段就能当属性用,private或者不写修饰符就是私有字段。
4.脚本中文问题:代码中有中文的话会有乱码问题。到资源管理器中打开项目的Assets文件夹(或点右键Show In Explorer),用unity3d目录下的Editor\Data\Tools\UniSciTE下的UniSciTE.exe打开cs文件,File→Encoding改为UTF-8 with BOM,敲个空格造成修改,然后保存即可(可以修改cs文件打开方式更简单)。最好一开始就修改编码,否则会很麻烦。
完整的代码:
第二:这里基本讲解一下当您打开一个脚本自带的两个函数Start、和Update的用法和意思
对于这个函数我想不用多讲,大家从字面意思就能理解,程序开始执行时调用的函数。上面提到Unity3D中初始化不能放在构造函数中要放到Start函数中。从某种意义上讲可以理解为Unity3D吧传统的构造函数用这里的Start来替换了(这里完全属于个人理解如果不理解不正确希望大神指出)。所以我们把Start理解为构造函数自然就容易理解为什么初始化要放到Start中了。这个函数主要用于对一些游戏资源的初始化用的。我相信这个函数大家容易理解,这里都不多讲了。
重点看下面一个。
这个函数可以说是一个核心函数。这里先问一下?您知道什么是帧的概念吗?如果处理过视频、弄过ps、flash之类的做动态的视频或者动画的朋友可能对这个帧比较了解。我这里简单描述一下帧的概念。大家先回想一下很久以前的那种电影是怎么做的?
没错就是你看到的这样一张一张连接而成的,然后快速浏览每一张就形成了动画。我们现在看到的视频、Gif等等一些都是类这种电影的胶片一张一个图像一个图像拼接的,然后每秒播放不低于24张(为什么是24如果我没记错的话24是视觉什么的最低帧数低于这个就是放幻灯片了)就会形成动画。讲了这么多那什么是帧呢?帧就可以形象的理解为这电影胶卷的每一个图片。
我这里引用一下百度百科
帧——就是影像
中最小单位的单幅影像画面,相当于
上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。
你这时就会问讲这么多废话,Update到底是怎么回事还没说呢?先别忙,如果您对帧这个概念不熟悉那么你对这个函数的理解就会还停留在.net中的事件驱动的那个机制。从字面理解Update就是刷新、更新的意思,那它刷新什么更新什么呢?我们用的Unity3d程序可以看作就是一个电影,当你一运行它,他就开始一帧一帧开始放映,没播放一帧就会调用一下这个Update函数。可能这里有点空洞,没关系大家先按自己当前理解的意思去做做练习,下一次会给大家一个实例来讲解一下咯函数。(为什么这里不讲我怕直接给例子先入为主了,当你按自己的理解去练习了才发下达不到效果,而后我再给出原因这样理解深刻一点)
馆藏&21087
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&[转]&跟我从零基础学习Unity3D开发
我的图书馆
跟我从零基础学习Unity3D开发
&好久没更新了,一直在加班敢项目进度。这里和关注我的博客的童鞋表示一下歉意!这里有我录的Unity3D从零开始的视频教程大家可以关注一下:
/view/555 & 视频会陆续的更新,需要讲什么也可以留言给我。
之前在项目中一直用的是别人以前的写的打包代码,后来项目需要需要修改以前的代码把打包的代码过了一遍,今天把自己遇到的问题和打包思路在这路写下来。
在untiy支援加载方面分为两个种类:
Resources方式加载-------我们不用打包资源,放在项目中的Resources目录下就能在代码中直接加载出来。
assetBundle方式加载-----需要我们打包资源,把每个资源打包成一个个Bundle,然后加载。
两类资源加载方式在游戏项目中都会用,Resources加载的资源一般是要求非常及时的,assetBundle加载相对要慢一些因为需要把assetBundle资源解压出来。assetBundle也是方便项目中做热更新(在游戏对外发布的过程中,我们需要替换一些资源,通过热更新的方式把资源更新出去供当前的客户端下载替换)。Assetbundle是官方推荐使用的打包方式,Assetbundle Unity(Pro)
提供的资源打包策略。
打包思路:
a、打包的资源一定要放在StreamingAssets目录下因为在移动平台下只能访问这个目录
b、AssetBundle的保存后缀名可以是assetbundle或者unity3d
c、BuildAssetBundle要根据不同的平台单独打包,BuildTarget参数指定平台,如果不指定,默认的webplayer
1、准备好我们需要打包的资源
2、加载需要打包的资源
3、获取当前对象列表的所有依赖项
4、设置打包编译选项
5、开始打包
重要函数解释:
Selection.objects & ---------------------------------------------------& 这个方法是用于判断在Asset目录中返回选中了哪些资源文件
AssetDatabase.GetAssetpath()-------------------------------------- 获取的是工程文件相对于Asset的路径
AssetDatabase.LoadMainAssetAtPath()---------------------------- & 加载指定路径下的资源
EditorUtility.CollectDependencies()--------------------------------- 获取当前对象列表的所有依赖项
BuildAssetBundleOptions ------------------------------------------- 打包编译选项
BuildPipeline.BuildAssetBundle() ---------------------------------- 打包函数
Path.GetFileNameWithoutExtension() ----------------------------- 获取路径下的不要扩展名的文件名
Path.ChangeExtension() -------------------------------------------- & 改变路径的文件后缀名
EditorUserBuildSettings.activeBuildTarget ----------------------- & 判断当前编译平台
下面列出打包实例代码!
1 using UnityE
2 using System.C
3 using UnityE
4 using System.IO;
5 using System.Collections.G
6 public class AssetBoundExport :EditorWindow {
[MenuItem("Window/资源打包")]
static void Init()
EditorWindow.GetWindow(typeof(AssetBoundExport));
void OnGUI()
*ui1.prefab
和ui2.prefab 是两个预制件,里面都包含loading.png这张图
*这个方法是讲依赖打包的
*通一个资源用在多个预制件中的时候我们就采用这种依赖打包更小
if (GUILayout.Button("打包UI对象", GUILayout.Width(100)))
BuildPipeline.PushAssetDependencies();
Object baseTexture = AssetDatabase.LoadMainAssetAtPath("Assets/Texture/loading.png");
ExportBundle&Texture2D&(AssetDatabase.GetAssetPath(baseTexture));
BuildPipeline.PushAssetDependencies();
Object p1 = AssetDatabase.LoadMainAssetAtPath("Assets/Prefab/ui1.prefab");
ExportBundle&GameObject&(AssetDatabase.GetAssetPath(p1));
BuildPipeline.PopAssetDependencies();
BuildPipeline.PushAssetDependencies();
Object p2 = AssetDatabase.LoadMainAssetAtPath("Assets/Prefab/ui2.prefab");
ExportBundle&GameObject&(AssetDatabase.GetAssetPath(p2));
BuildPipeline.PopAssetDependencies();
BuildPipeline.PopAssetDependencies();
AssetDatabase.Refresh();
/// &summary&
/// 这个方法是用于单独给某类资源打包(这个方法实例是打图片的)
/// 应用场景:在实际项目中我们每次不一定是要全部打包,更多的时候是只需要打某一个资源
/// &/summary&
[MenuItem("Assets/打包/Textrue")]
public static void PackageTextureAssetBundle()
Object[] _Object = Selection.
for (int i = 0; i & _Object.L i++)
ExportBundle&Texture2D&(AssetDatabase.GetAssetPath(_Object[i]));
/// &summary&
/// 打包通用类
/// &/summary&
/// &typeparam name="T"&&/typeparam&
/// &param name="path"&&/param&
private static void ExportBundle&T&(string path) where T:Object
T assetObject = AssetDatabase.LoadMainAssetAtPath(path) as T;
if (assetObject == null)
Debug.Log("can't load "+path);
string _path = Application.dataPath + "/StreamingAssets/PC/" + Path.GetFileNameWithoutExtension(path);
_path = Path.ChangeExtension(_path, ".unity3d");
List&Object& obejectList = new List&Object&();
Object[] tempobject = new Object[1];
tempobject[0] = assetO
Object[] kDepens = EditorUtility.CollectDependencies(tempobject);
for (int i = 0; i & kDepens.L i++)
obejectList.Add(kDepens[i]);
BuildAssetBundleOptions babo = BuildAssetBundleOptions.CollectDependencies | pleteAssets
85 | BuildAssetBundleOptions.DeterministicAssetB
bool istru=
BuildPipeline.BuildAssetBundle(assetObject, obejectList.ToArray(),_path, babo, EditorUserBuildSettings.activeBuildTarget);
if (istru == true)
Debug.Log("打包成功");
Debug.Log("打包失败");
TA的最新馆藏}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信