学以致用,任何学问的学习都要立足于现实,努力实践,方可更进一步。Unity作为目前主流的3D游戏引擎,在各个领域已经展露出应用价值。此次借博客园宝地,针对一个具体的Unity项目的开发过程,将相关经验及感悟发布于此,只求记录过程及对他人有所帮助,望各位大神多指教,本文主要是对Unity项目开发环境如何搭建的经验总结。

  首先,项目搭建在oschina平台下,通过Git工具进行工程版本管理,经过学习网络大神的资料,总结出一个简单的环境搭建方案,不足之处很多希望各位看官多多指教。

  搭建环境步骤如下:

第一步.Unity产品下载及安装(官方网站)https://unity3d.com/

第二步.oschina账号申请及工程创建。如果对于Git不熟悉,最好网补一下相关知识。GitHub由于网络等限制,目前作为备用。

unity 2023 安卓环境配置 unity安卓开发环境_加载

  第三步.Git及TortoiseGit安装。自己网络找最新版。

unity 2023 安卓环境配置 unity安卓开发环境_unity 2023 安卓环境配置_02

  由于Unity项目的特点,需要在.gitignore文件内进行过滤,具体如下:



#===============#
#注意,将二级制的文件配置为txt格式:
#在 Edit->Project Settings->Editor->Version Control Mode 中选择 Visible Meta files。
#在 Edit->Project Settings->Editor->Asset Serialization Mode 中选择 Force Text。
#保存场景和项目。
#===============#


#===============#
Unity generated
#===============#

[Ll]ibrary/
[Tt]emp/


#===============#
Visual Studio / MonoDevelop generated
#===============#
[Ee]xportedObj/
[Oo]bj/
*.svd
*.userprefs
/*.csproj
*.pidb
*.suo
/*.sln
*.user
*.unityproj
*.booproj

#===============#
OS generated
#===============#
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db



  注意:TortoiseGit本地保存git用户名密码的配置。

unity 2023 安卓环境配置 unity安卓开发环境_System_03

    

unity 2023 安卓环境配置 unity安卓开发环境_unity 2023 安卓环境配置_04

 

  添加关键信息即可:

unity 2023 安卓环境配置 unity安卓开发环境_System_05

 

 

第四步.Unity配置,由于有些资源Unity会存储为二进制格式,对于版本管理及对比不方便,因此,到菜单“Edit”->“Project Settings”->“Editor”,进行如下图配置。

 

unity 2023 安卓环境配置 unity安卓开发环境_unity 2023 安卓环境配置_06

 

 

第五步.代码文件注释头模板及自动填写(Windows版本)



  1)到Unity的安装目录下文件夹ScriptTemplates:\Unity\Editor\Data\Resources\ScriptTemplates,Unity中的脚本创建使用的是模板拷贝,拷贝的就是这个文件夹下的脚本。



  2)打开里面的 81-C# Script-NewBehaviourScript.cs.txt,这个是创建C#脚本的模板,在里面添加可替换注释模板:



unity 2023 安卓环境配置 unity安卓开发环境_unity 2023 安卓环境配置_07

  下来进行Editor插件编写,并且将此脚本放到“Editor”目录下,Unity引擎会自动进行加载并运用,具体代码如下:

unity 2023 安卓环境配置 unity安卓开发环境_加载_08


 


using UnityEditor;
using UnityEngine;
using System.IO;

public class AddFileHeadComment : UnityEditor.AssetModificationProcessor
{
    /// <summary>
    /// 此函数在asset被创建完,文件已经生成到磁盘上,但是没有生成.meta文件和import之前被调用
    /// </summary>
    /// <param name="newFileMeta">newfilemeta 是由创建文件的path加上.meta组成的</param>
    public static void OnWillCreateAsset(string newFileMeta)
    {
        //此处添加一个消息框进行提示,每次修改文件头都有消息框弹出,作为Editor机制入门案例。
        //避免新手文件放置错误导致无法调测,功能完备后可以自己注释掉。
        EditorUtility.DisplayDialog("添加文件头注释", newFileMeta, "ok");
        
        string newFilePath = newFileMeta.Replace(".meta", "");
        string fileExt = System.IO.Path.GetExtension(newFilePath);
        if (fileExt != ".cs")
        {
            return;
        }
        //注意,Application.datapath会根据使用平台不同而不同
        string realPath = Application.dataPath.Replace("Assets", "") + newFilePath;
        string scriptContent = File.ReadAllText(realPath);
        
        //这里实现自定义的一些规则
        scriptContent = scriptContent.Replace("#SCRIPTFULLNAME#", System.IO.Path.GetFileName(newFilePath));
        scriptContent = scriptContent.Replace("#COMPANY#", PlayerSettings.companyName);
        scriptContent = scriptContent.Replace("#AUTHOR#", "yaozhl");
        scriptContent = scriptContent.Replace("#VERSION#", "1.0");
        scriptContent = scriptContent.Replace("#UNITYVERSION#", Application.unityVersion);
        scriptContent = scriptContent.Replace("#DATE#", System.DateTime.Now.ToString("yyyy-MM-dd"));

        File.WriteAllText(realPath, scriptContent);
        AssetDatabase.Refresh();

    }

}


   最后的效果:

unity 2023 安卓环境配置 unity安卓开发环境_版本管理_09

  

 

第六步.项目结构

  Unity项目和其他的应用开发项目不同,关键是把握住“基于组件”这四个字,不要用一般的项目组织来规划目录,但是需要建立一个“GameAssets”目录,这个目录主要功能就是和美工等资源导入目录,外部的非开发资源尽量通过此目录下的打包进行导入。

  此节参考网文:http://www.jianshu.com/p/614de9913ff7  https://www.douban.com/group/topic/59120314/%20

unity 2023 安卓环境配置 unity安卓开发环境_加载_10

 

 Assets    #unity3d 默认主目录。
-----Editor #编辑器类存放文件夹。以Editor命名的文件夹允许其中的脚本访问Unity Editor的API。如果脚本中使用了在UnityEditor命名空间中的类或方法,它必须被放在名为Editor的文件夹中。Editor文件夹中的脚本不会在build时被包含。
在项目中可以有多个Editor文件夹。
注意:如果在普通的文件夹下,Editor文件夹可以处于目录的任何层级。如果在特殊文件夹下,那Editor文件夹必须是特殊文件夹的直接子目录。
-----ExternalLibraries
-----GameAssets
------------|Materials
------------|Models
------------|Animations
------------|Prefabs
------------|Sounds
------------|Textures
------------|UI
------Plugins  #dll和一些纯代码插件。Plugins文件夹用来放native插件。它们会被自动包含进build中去。注意这个文件夹只能是Assets文件夹的直接子目录。
在Windows平台下,native 插件是dll文件;Mac OS X下,是bundle文件;Linux下,是.so文件。
跟Standard Assets一样,这里的脚本会更早的编译,允许它们被之外的脚本访问。
------Resources  #所有需要通过Resource.Load加载的资源都存放于此,Resources文件夹允许你在脚本中通过文件路径和名称来访问资源。但还是推荐使用直接引用来访问资源。
放在这一文件夹的资源永远被包含进build中,即使它没有被使用。因为Unity无法判断脚本有没有访问了其中的资源。
项目中可以有多个Resources文件夹,因此不建议在多个文件夹中放同名的资源。
一旦build游戏,Resources文件夹中的所有资源被打包进游戏存放资源的archive中。这样在游戏的build中就不存在Resources文件夹了。即使脚本中仍然使用了资源在项目中的路径。
注意:当资源作为脚本变量被访问时,这些资源在脚本被实例化后就被加载进内存。如果资源太大,你可能不希望它被这样加载。那么你可以将这些大资源放进Resources文件夹中,通过Resources.Load来加载。当不再使用这些资源了,可以通过Destroy物体,再调用Resources.UnloadUnusedAssets来释放内存。
------Scenes
------Scripts
------StreamingAssets

第七步.工具类需求

  Photoshop 必备

  Microsoft Visual Studio 强烈推荐2015版,各种功能支持。

  Unity版本管理注意事项

  随着项目进展不断更新。

  下一步准备介绍微型团队合适的Git开发流程模式。

经验总结:

  新Unity项目由于要使用各种插件,请严格按照之前的目前结构规划,如果出现插件目录异常,尤其是根目前出现异常的情况,可以直接将相应目录拖至目标目录,这样Unity会自己组织文件关系,很方便。导入其他组件之前最好做一次全量提交,避免出现脚本冲突导致项目无法编译。

  感觉Unity的项目开发环境的维护关键是深入了解Unity引擎内部的各种机制,这样可以提高对问题的分析及解决能力。