Unity的使用(一):创建项目和项目文件夹

本章主要介绍Unity的一些基础内容,包括起源,网址,资源等,是一个杂乱的相当基本的知识汇总。读者只需大致了解一下,有个印象就好。

一. Unity的起源

Unity的出现得益于游戏行业的快速发展。1992年,3D Realms公司/Apoges公司发布的小游戏《德军司令部》和id Software公司的射击游戏《Doom》成为了游戏引擎诞生初期的两部代表作,而其开发平台Doom引擎也成为了第一个被用于授权的引擎。第一款完全支持多边形模型,动画以及粒子特效的真正意义上的3D引擎则是Quake引擎,其开发的《Quake》游戏树立了FPS游戏操作标准。

然而此时Epic Megagames(EPIC)公司推出了后面大名鼎鼎的Unreal游戏引擎,并紧接着推出了Unreal2引擎及其升级Unreal2.5。2002年,Direct9时代到来,一个热爱游戏的团队Over the Edge Entertainment开发了第一代版本的Unity引擎。在2004年Unity公司在丹麦的阿姆斯特丹诞生,并于2005年将公司总部设在美国旧金山,同时发布了Unity1.0版本,至此,Unity引擎正式诞生。

Unity用户手册1官方网址:https://docs.unity3d.com/Manual/
Unity应用商店:https://assetstore.unity.com/

二. Unity基础使用

Unity是有个人版的,只要你的不是用于商业用途或者你的单位年收入在十万美元以下,都是可以免费使用的,当然,功能会是少一些,但对于初学者来说基本是没什么影响的。所以还是建议直接上Unity官网下载正版,同时注册一个Unity账号,这样能享受到Unity资源商店里的许多免费资源。

较新的Unity版本其各个功能都是模块化的,我们在安装时可以选择性安装各个功能组件,比如只安装核心编辑器,其余的文档通过网站浏览等,这样可以大大减少包体的体积。

那么下载完Unity后,怎么开始一个项目呢?下面附一张图,看完图相信你就明白了:
Unity开始界面
创建一个新项目会在你选定的地方创建一个该项目的文件夹,下面我以创建一个MyTest文件为例:
Unity创建新项目
其中对UnityAnalytics还要多说几句,其是一个专门为游戏打造的免费分析服务,有专门的服务网站展示你项目的用户使用情况,不过在国内貌似被墙了。通过菜单栏Window-Services找到Services选项卡也能对其进行打开关闭。

那么创建完成的项目文件夹内部什么样的呢(以上面的MyTest项目为例)?
创建完成项目的文件夹
其中,sln,solusion表示解决方案csproj,c sharp project表示C#项目Assembly-CSharp-vs.csproj/Assembly-Csharp.csproj为C#脚本生成的VisualStudio和MonoDevelop的工程文件;同样的Assembly-UnityScript-vs.unityproj/Assembly-UnityScript.unityproj为UnityScript的工程文件(不是JavaScript哦)。想了解这些文件的意义?

在这些文件夹中,一般情况我们只需要对Assets文件夹和ProjectSettings文件夹进行控制就可以了。其它的如Library(存储将Asset下的资源导入成自身识别的格式和编译代码产生的DLL文件)都是由游戏引擎帮我们完成。

三. Unity中的特殊文件夹

这些文件夹自然也是位于Assets文件夹下面,不过它们相对一般的自定义文件夹有着特殊的意义。

0. 隐藏文件夹

以".“开头或者以”~"结尾的文件夹会被忽略。在这种文件夹中的资源不会被导入,脚本也不会被编译,也不会出现在Project视图中。但我们可以在资源浏览器中找到这些文件。像上图中的“.vs”文件夹1

1. Editor

Editor文件夹既可以在Assets文件目录下,也可以在其某个子文件夹里,只要名字叫做Editor就行。无论有多少个Editor文件夹,Editor文件夹中的资源文件或脚本都不会被打包进发布包中,也不能作为组件,并且脚本也只能在开发编辑时使用(同样的,有些脚本涉及到对编辑器的操作时,也必须放在这个文件夹里,如EditorWindow)。
因此,我们常常将一些开发工具放在这个文件夹里面,如:技能编辑器,资源打包工具等。

2. Editor Dafault Resources

Editor Dafault Resourses,注意名称中间是有空格的,它必须被放在Assets目录下。你可以把编辑器用到的一些资源放在这里,比如图片,文本等。它和Editor文件夹一样不会被打到最终发布包里。你可以通过EditorGUIUtility.Load(“文件名”)来读取该文件夹下的资源,会优先查找该文件夹下的资源,然后再找Unity可能的内置同名资源。

3. Gizmos

当我们需要绘制提示图标,辅助线之类来辅助开发时,除了使用Debug.DragLine, Debug.DrawRay等来绘制之外,还可以使用Unity自带的Dizmos类。当组件继承了MonoBehaviour后,其生命周期里有OnDrawGizmos()方法,该方法只在编辑模式下每一帧执行,可用于在scene视图中绘制小物件。如下:

void OnDragGizmos() 
{
 		Gizmos.DrawIcon(transform.position, "ImaInGizmos.png", true);
}

其中,ImaInGizmos.png就是放在Gizmos文件夹中的图片文件名字了,使用该函数可以直接调用位于该文件夹里的资源,发布时同样不会打入发布包中。

4. Plugins

同样只能在Assets直接子目录下,这个文件夹存放用于拓展Unity功能的插件,如:原生动态(native)链接库,sdk,工具代码等。使用这些插件可以访问第三方代码库,系统API以及超出Unity功能的模块。因为该文件夹中的东西会在第一阶段编译,以保证在其它地方使用时能够找得到。当打包时,这些文件就会自动包含进发布包中。

Plugins中文件分为两种:Managed plugins(.NET编写的工具)和Native plugins(原生代码编写的库)。如我们需要导入解析Json文件的LitJson插件,就需要把该LitJson.dll文件放到Plugins目录下;NGUI源码也是放在该文件夹下。

当我们开发的游戏需要对接多个平台时,要分平台打包,就需要对不同平台的plugin区分。在Plugins目录下建立对应平台的文件夹,unity在为不同平台打包时,就会将对应平台plugin里的脚本编译成dll,还会把已经是dll, so等库直接拷贝到包内相应位置。
Plugins/x86: win32位平台plugin Plugins/x86_64: win64位平台plugin
Plugins/Android: Android平台 Plugins/iOS: iOS平台

5. Standard Assets

属于第一阶段(最先)被编译的文件夹,往往用来存放导入的第三方资源包。

6. Pro Standard Assets

和Standard Assets一样,属于第一阶段(最先)被编译的文件夹,不同的是,里面的文件是给Pro版本的Unity使用的。

7. Resources

用来存放资源的特殊文件夹,可以在任何目录下,只要名字叫Resources就行,可以在不同文件夹下有多个叫Resources的文件夹。

放在Resources文件夹中的资源不管用还是不用都会被打包进发布包,Unity无法判断是否使用了其中的资源,所有在Resources中的资源都会被打包成一个缺省的AssetBundle(resources.assets)中。因此,一定要避免在不同Resources文件夹中出现同名资源的情况。当有同名资源的情况下,位于Standard Assets, Pro Standard Assets文件夹的优先级会较低(被认为是默认资源,当没有其它同名资源时才会找它)。

下面是资源加载方式:

Resources.Load("AssetName");	//编辑时和运行时都可以使用的方式,默认从Resources目录下读取
AssetDatabase.LoadAssetAtPath("AssetPath");	//需要引用UnityEditor,也就是说这种方式只能在编辑时使用,但它可以读取Assets目
											录下的任意文件夹下的资源。路径格式为:”Assets/xx/xx.xxx”,需要带文件后缀

资源释放方式:
当你不需要这些资源了,可以通过Destroy()来摧毁创建的游戏物体,然后通过Resources.UnloadUnusedAssets()来释放出内存。

8. StreamingAssets

放在该文件夹中的资源也会全部打进包中,但是它是”原封不动“的打包进去(直接拷贝到包里),在游戏运行时只能读不能写。不同平台该文件的路径也不同,使用Unity的Application.StreamingAssetsPath会根据平台返回正确路径。
Mac OS or Windows: path = Application.dataPath + "/StreamingAssets"
IOS: path = Application.dataPath + ”/Raw“
Android: path = "jar:file://" + Application.dataPath + "!/assets/"
我们一般将初始的AssetsBundle资源放在该文件夹下,并且通过WWW或者AssetsBundle.LoadFromFile加载使用

9. WebPlayerTemplates

用来替换web build的默认网页,这个文件夹中的脚本都不会被编译,且该文件夹必须位于Assets目录下。

10. 特殊
  1. 文件名末尾带有“~”,该文件并不会被识别为Unity文件,Unity将不会为它生成meta文件;

  1. .vs目录是用来存储当前用户在解决方案中的工作配置,具体包括VisualStudio关闭前最后的窗口布局,最后打开的选项卡/操作记录/文件文档,某些自定义配置/开发环境,调试断点等这类设置信息和状态。内部的文件夹“v16”表示对应的VS版本号。 ↩︎ ↩︎

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,可以通过手动创建文件夹或通过脚本自动创建文件夹。 手动创建文件夹可以通过在Unity的Project视图中右键点击选择"Create"然后选择"Folder"来创建文件夹。你可以选择在Assets文件夹创建文件夹,也可以在其他文件夹创建文件夹。此外,还有一些特殊文件夹,如Resources文件夹用于存储需要在运行时动态加载的资源,StreamingAssets文件夹用于存储需要和应用程序一起打包的数据,Plugins文件夹用于存储第三方插件或库。 如果你想要在导入资源包的时候自动创建文件夹,你可以使用脚本来实现。在Assets/Scripts/Editor文件夹创建一个脚本,并命名为AutoCreateFloder.cs。在这个脚本中,你可以使用Unity的AssetPostprocessor类,在OnPostprocessAllAssets方法中监听导入资源的事件,并在事件触发时创建文件夹。这个脚本可以参考以下代码: ``` using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class AutoCreateFloder : AssetPostprocessor { static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string s in importedAssets) { if (s.Equals("Assets/Scripts/Editor/AutoCreateFloder.cs")) { CreateProjectFloder.CreatAllProjectFolder(); return; } } } } ``` 这段代码会在导入资源时检查导入的资源路径,如果路径匹配到了脚本的路径,则调用CreateProjectFloder.CreatAllProjectFolder()方法来创建文件夹。你可以根据自己的需求修改脚本中的方法以及文件夹创建逻辑。 总结起来,Unity创建文件夹可以通过手动创建使用脚本自动创建。手动创建可以通过在Project视图中右键点击选择"Create"然后选择"Folder"来创建文件夹,也可以创建一些特殊文件夹如Resources、StreamingAssets和Plugins。自动创建文件夹可以通过编写一个脚本,在AssetPostprocessor的OnPostprocessAllAssets方法中监听导入资源事件,并在事件触发时创建文件夹。以上就是Unity创建文件夹的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Unity3D小功能】Unity3D中在创建项目后自动创建文件夹列表](https://blog.csdn.net/q764424567/article/details/129662252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值