unity3d 项目源代码管理_unity3d源代码 - CSDN
  • Unity3D工程源码目录

    2018-01-18 16:18:59
    https://www.cnblogs.com/AaronBlogs/p/6816842.html
    展开全文
  • What are best practices for using Git source control with Unity 3D, particularly in dealing with th

    本文翻译自:How to use Git for Unity3D source control?

    What are best practices for using Git source control with Unity 3D, particularly in dealing with the binary nature of Unity 3D projects? Git源代码控制与Unity 3D结合使用的最佳实践是什么,特别是在处理Unity 3D项目的二进制特性方面? Please describe the workflow, what paths would be included in .gitignore, what settings should be set in Unity and/or the project, and any other special things that should be noted. 请描述工作流程,.gitignore中将包括哪些路径,应在Unity和/或项目中设置哪些设置以及应注意的其他任何特殊事项。

    Note: I realize that using the Asset Server is the Unity-recommended way, but I would like to use Git for a variety of reasons. 注意:我意识到使用Asset Server是Unity推荐的方法,但是出于多种原因,我想使用Git。 Please no answers that state or argue that I should just use the Asset Server. 请不要说出任何答案,也不要说我应该只使用资产服务器。 The Asset Server really isn't an option for me. 资产服务器对我来说真的不是一个选择。


    #1楼

    参考:https://stackoom.com/question/1ETBe/如何将Git用于Unity-D源代码管理


    #2楼

    The following is an excerpt from my personal blog . 以下是我个人博客的摘录。

    Using Git with 3D Games 在3D游戏中使用Git

    Update Oct 2015: GitHub has since released a plugin for Git called Git LFS that directly deals with the below problem. 2015年10月更新: GitHub已为Git发布了一个名为Git LFS的插件,可直接解决以下问题。 You can now easily and efficiently version large binary files! 您现在可以轻松高效地对大型二进制文件进行版本控制!

    Git can work fine with 3D games out of the box. Git可以直接使用3D游戏。 However the main caveat here is that versioning large (>5 MB) media files can be a problem over the long term as your commit history bloats. 但是,这里的主要警告是,随着提交历史记录的膨胀,从长远来看,对大型(> 5 MB)媒体文件进行版本控制可能会成为一个问题。 We have solved this potential issue in our projects by only versioning the binary asset when it is considered final. 通过仅在二进制资产被视为最终版本时对其进行版本控制,我们已经解决了项目中的潜在问题。 Our 3D artists use Dropbox to work on WIP assets, both for the reason above and because it's much faster and simpler (not many artists will actively want to use Git!). 我们的3D艺术家使用Dropbox的工作对WIP的资产,无论是上述的原因,因为它的速度更快和更简单的(不是很多艺术家会积极想使用Git的!)。

    Git Workflow Git工作流程

    Your Git workflow is very much something you need to decide for yourself given your own experiences as a team and how you work together. 考虑到您作为团队的经验以及如何合作,您需要自行决定Git工作流程。 However. 然而。 I would strongly recommend the appropriately named Git Flow methodology as described by the original author here . 我强烈建议使用原作者在此处描述的适当命名的Git Flow方法。

    I won't go into too much depth here on how the methodology works as the author describes it perfectly and in quite few words too so it's easy to get through. 在本文中,作者将完美地描述它并用很少的几句话描述,因此我不会在方法上深入探讨,因此很容易理解。 I have been using with my team for awhile now, and it's the best workflow we've tried so far. 我已经和我的团队一起使用了一段时间,这是到目前为止我们尝试过的最好的工作流程。

    Git GUI Client Application Git GUI客户端应用程序

    This is really a personal preference here as there are quite a few options in terms of Git GUI or whether to use a GUI at all. 这实际上是个人喜好,因为在Git GUI或是否完全使用GUI方面有很多选择。 But I would like to suggest the free SourceTree application as it plugs in perfectly with the Git Flow extension. 但是我想建议一个免费的SourceTree应用程序,因为它可以完美地与Git Flow扩展插件一起插入。 Read the SourceTree tutorial here on implementing the Git Flow methodology in their application. 此处阅读有关在其应用程序中实施Git Flow方法的SourceTree教程

    Unity3D Ignore Folders Unity3D忽略文件夹

    For an up to date version checkout Github maintained Unity.gitignore file without OS specifics. 对于最新版本的检出, Github保留了Unity.gitignore文件,而没有特定于操作系统的信息。

    # =============== #
    # Unity generated #
    # =============== #
    Temp/
    Library/
    
    # ===================================== #
    # Visual Studio / MonoDevelop generated #
    # ===================================== #
    ExportedObj/
    obj/
    *.svd
    *.userprefs
    /*.csproj
    *.pidb
    *.suo
    /*.sln
    *.user
    *.unityproj
    *.booproj
    
    # ============ #
    # OS generated #
    # ============ #
    .DS_Store
    .DS_Store?
    ._*
    .Spotlight-V100
    .Trashes
    ehthumbs.db
    Thumbs.db
    

    Unity3D Settings Unity3D设置

    For versions of Unity 3D v4.3 and up: 对于Unity 3D v4.3及更高版本:

    1. (Skip this step in v4.5 and up) Enable External option in Unity → Preferences → Packages → Repository . (在v4.5及更高版本中跳过此步骤)在Unity → Preferences → Packages → Repository启用External选项。
    2. Open the Edit menu and pick Project Settings → Editor : 打开Edit菜单,然后选择Project Settings → Editor
      1. Switch Version Control Mode to Visible Meta Files . Version Control Mode切换到Visible Meta Files
      2. Switch Asset Serialization Mode to Force Text . Asset Serialization Mode切换为Force Text
    3. Save the scene and project from File menu. 从“ File菜单保存场景和项目。

    Want you migrate your existing repo to LFS? 要将现有的回购迁移到LFS吗?

    Check out my blog post for steps on how to do it here . 在这里查看我的博客文章以获取有关如何执行此操作的步骤。

    Additional Configuration 附加配置

    One of the few major annoyances one has with using Git with Unity3D projects is that Git doesn't care about directories and will happily leave empty directories around after removing files from them. 在Unity3D项目中使用Git的几个主要烦恼之一是Git不在乎目录,并且从其中删除文件后会很乐意将空目录留在周围。 Unity3D will make *.meta files for these directories and can cause a bit of a battle between team members when Git commits keep adding and removing these meta files. Unity3D将为这些目录创建* .meta文件,当Git承诺不断添加和删除这些元文件时,Unity3D可能会在团队成员之间引起一场争斗。

    Add this Git post-merge hook to the /.git/hooks/ folder for repositories with Unity3D projects in them. 将此Git合并后的钩子添加/.git/hooks/文件夹中,以获取其中包含Unity3D项目的存储库。 After any Git pull/merge, it will look at what files have been removed, check if the directory it existed in is empty, and if so delete it. 在任何Git拉/合并之后,它将查看已删除了哪些文件,检查其所在目录是否为空,如果是,则将其删除。


    #3楼

    Edit -> Project Settings -> Editor

    Set Version Control to meta files. 将“版本控制”设置为元文件。 Set Asset Serialization to force text. 将资产序列化设置为强制文本。

    I think this is what you want. 我想这就是你想要的。


    #4楼

    In Unity 4.3 you also had to enable External option from preferences, but since Unity 4.5 they dropped option for that, so full setup process looks like: 在Unity 4.3中,您还必须从首选项中启用“外部”选项,但是自从Unity 4.5起,他们为此放弃了选项,因此完整的设置过程如下所示:

    1. Switch to Visible Meta Files in Editor → Project Settings → Editor → Version Control Mode Editor → Project Settings → Editor → Version Control Mode切换到Visible Meta Files
    2. Switch to Force Text in Editor → Project Settings → Editor → Asset Serialization Mode Editor → Project Settings → Editor → Asset Serialization Mode切换到Force Text
    3. Save scene and project from File menu 从“ File菜单保存场景和项目

    Also our team is using a bit more extended .gitignore file: 我们的团队也使用了更多扩展的.gitignore文件:

    # =============== #
    # Unity generated #
    # =============== #
    Temp/
    Library/
    
    # ===================================== #
    # Visual Studio / MonoDevelop generated #
    # ===================================== #
    ExportedObj/
    obj/
    *.svd
    *.userprefs
    /*.csproj
    *.pidb
    *.suo
    /*.sln
    *.user
    *.unityproj
    *.booproj
    
    # ============ #
    # OS generated #
    # ============ #
    .DS_Store
    .DS_Store?
    ._*
    .Spotlight-V100
    .Trashes
    ehthumbs.db
    Thumbs.db
    

    Note that the only folders you need to keep under source control are Assets and ProjectSettings . 请注意,您需要保留在源代码管理下的唯一文件夹是AssetsProjectSettings

    More information about keeping Unity Project under source control you can find in this post . 有关使Unity Project处于源代码控制下的更多信息,您可以在本文中找到。


    #5楼

    What is GIT? 什么是GIT?

    Git is a free and open source distributed version control system (SCM) developed by Linus Torvalds in 2005 ( Linux OS founder). Git是Linus Torvalds在2005年(Linux OS的创始人)开发的一个免费的开源分布式版本控制系统(SCM)。 It is created to control everything rom small to large projects with speed and efficiency. 它的创建是为了快速有效地控制从小型项目到大型项目的所有内容。 Leading companies like Google, Facebook, Microsoft uses GIT everyday. 谷歌,Facebook,微软等领先公司每天都使用GIT。

    If you want to learn more about GIT check this Quick tutorial , 如果您想了解有关GIT的更多信息,请查看此快速教程

    First of all make sure you have your Git environment set up.You need to set up both your local environment and a Git repository (I prefer Github.com). 首先,请确保已设置Git环境。您需要同时设置本地环境和Git存储库(我更喜欢Github.com)。

    GIT client application Mac/Windows GIT客户端应用程序Mac / Windows

    For GIT gui client application i recommended you to go with Github.com, 对于GIT gui客户应用程序,我建议您使用Github.com,

    GitHub is the place to share code with friends, co-workers, classmates, and complete strangers. GitHub是与朋友,同事,同学和完全陌生的人共享代码的地方。 Over five million people use GitHub to build amazing things together. 超过500万人使用GitHub共同构建了惊人的东西。

    Unity3d settings Unity3d设置

    You need to do these settings 您需要进行这些设置

    Switch to Visible Meta Files in Edit → Project Settings → Editor → Version Control Mode. 在编辑→项目设置→编辑器→版本控制模式下切换到可见元文件。

    在此处输入图片说明

    Enable External option in Unity → Preferences → Packages → Repository 在Unity→偏好设置→软件包→存储库中启用外部选项

    在此处输入图片说明

    Switch to Force Text in Edit → Project Settings → Editor → Asset Serialization Mode. 在编辑→项目设置→编辑器→资产序列化模式下切换到强制文本。

    在此处输入图片说明

    Source: Using Git With 3D Games Source Control 来源: 将Git与3D游戏一起使用源代码控制


    #6楼

    I thought that I might post a simpler .gitignore for anyone that is interested: 我认为我可以对感兴趣的任何人发布一个更简单的.gitignore

    # Ignore Everything
    /*
    
    # Except for these:
    !/.gitignore
    !/Assets
    !/Packages
    !/ProjectSettings
    
    展开全文
  • 本系列文章由 Amazonzx 编写,...Asset Server是目前Unity内部自带的资源版本管理工具,类似于我们平时所熟知的SVN,perForce,但对于目前的Unity,Asset Server要比SVN和perForce等版本控制软件要好用一些,因为...

    本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处。

    http://blog.csdn.net/amazonzx/article/details/7980117

    Asset Server是目前Unity内部自带的资源版本管理工具,类似于我们平时所熟知的SVN,perForce,但对于目前的Unity,Asset Server要比SVN和perForce等版本控制软件要好用一些,因为Unity3.x版本对于SVN等软件的支持并不是很好,在多人协同工作时,经常会发生数据丢失等情况。因此,本文重点介绍一下Asser Server的搭建方法。至于日常用法,其实与SVN等软件的用法非常相似,所以在这里就不多讲了。

    关于Asset Server的搭建步骤,其实官网论坛上已经有了解释得比较详细明了,在这里,我只将其归纳总结一下,使其更加清晰明了。Asset Server的搭建步骤如下所示:

    1、  首先去官网下载Asset Server工具,地址为:http://unity3d.com/unity/team/assetserver/。下好后在你的服务器上进行安装,这里有个重要的地方,即Asset Server的密码设置,界面如下,这个密码即为以后Asset Server的管理员密码。

    2、 安装好后,运行Unity,通过“Window->Asset Server”打开Asset Server界面,如下所示:

    3、 点击上图中的“Administration”,可打开如下界面:

    4、 Server Address输入“localhost”,User Name输入“admin”,然后输入安装Asset Server时设置的密码,即可进行连接,连接成功后,右侧“Admin Actions”中的前两项会被点亮,如下所示:

    5、 点击“Create”即可在服务器端建立起一个新的项目,再点击“New User”可对于该项目配置用户。点击“Create”后,会让你输入新的项目名称,假设为“AA”,界面如下:

    6、 点击“Create Project”即可建立起一个名为“AA”新的空项目。点击项目AA,你会发现“Admin Actions”中的按钮全部变亮,即你可以对项目进行拷贝、删除等操作。

    7、 在“User”中只有“admin”管理员用户,要想创建其他用户,可点击“New User”来建立。

    8、 填好信息后,即可创建新用户,如下图所示:

    9、 以上操作则在服务器上建立了一个新的空项目,以及新的用户,下面就介绍如何将已有项目资源导入到该空项目中。右键点击项目AA,选择“Connection”,即会出现如下界面:

    10、输入Server IP,服务器则输入“localhost”,用户名和密码,点击“Show Projects”则可看到当前服务器上的项目名称,选择你想连接的项目,即可进行连接,如下图所示:

    11、点击“Connect”,经过一段时间等待以后,即会出现如下界面:

    12、右侧的后缀为“绿色New”的资源是表明该资源对于服务器来说是新的(因为当前服务器项目为空,所以所有资源全是New),需要进行Commint。点击“Commit”,则出现如下界面:

    13、点击Add All后,即可进行Commit上传资源了,自此,服务器上的Asset Server搭建完毕,其他用户可以通过创建新用户来进行资源的下载和上传。

    转载于:https://www.cnblogs.com/Lin267307031/archive/2013/03/01/2938251.html

    展开全文
  • Unity3D代码混淆

    2016-11-28 16:01:11
    Unity代码混淆方案 内容提要:Unity引擎下的代码保护,由于Unity引擎的一些特殊性,实行起来较为复杂,在国内外业界并没有现成的方案。笔者通过在《QQ乐团》项目上的实际尝试,得出了一种具体可行,能够有效保护...

    Unity代码混淆方案

    内容提要:Unity引擎下的代码保护,由于Unity引擎的一些特殊性,实行起来较为复杂,在国内外业界并没有现成的方案。笔者通过在《QQ乐团》项目上的实际尝试,得出了一种具体可行,能够有效保护代码逻辑的方案。特此分享给关注Unity引擎的项目,希望能提供一些的参考。

    背景

    Unity引擎上的程序执行在Mono运行时上,使用Mono编译出的程序集格式与.NET标准一致。C#是Unity引擎下主要的开发语言,它具备不少高级语言特性,如反射、元数据、内置序列化等。但C#同时也是很容易被反编译的语言,如果不采用任何保护措施,使用常用的工具(.NET Reflector)便能很容易得到可二次编译的代码。对项目运营带来了比较大的风险。

    .NET平台下通常的保护手段是混淆编译出的程序集。VisualStudio自带了一个混淆工具Dotfuscator可以对程序集进行混淆。功能包括名称修改,流程混淆,字符串加密等。经过Dotfuscator混淆后的程序集,能够避免被常用反编译工具破解。变量的表意性被破坏,同时函数的内部流程也被混淆(如下[B1] )。能有效起到保护源代码的效果。

    publicclass181: 218

    {

        // Fields

        publicuint0;

        publicushort1;

        publicstaticreadonlyuint2;

        publicstaticreadonlyuint3;

     

        // Methods

        static181();

        public181();

        public95.02();

        public95.02(ref515A_0, uintA_1);

        public95.02(79A_0, refuintA_1);

        public95.02(ref79A_0, uintA_1);

        public95.02(byte[] A_0, intA_1, refuintA_2);

        public95.02(ref481A_0, intA_1, charA_2);

        public95.02(refstringA_0, intA_1, charA_2);

        public95.02(refbyte[] A_0, intA_1, refintA_2, uintA_3);

        public95.03(ref79A_0, uintA_1);

        public95.03(refbyte[] A_0, intA_1, refintA_2, uintA_3);

        public95.04(refbyte[] A_0, intA_1, refintA_2, uintA_3);

    }

    public95.00(refsbyteA_0, intA_1)

    {

        // This item is obfuscated and can not be translated.

        goto Label_0006;

        if(1!= 0)

        {

        }

        95.0local= 95.0.0;

        bytenum= 0;

        local = this.0(refnum,A_1);

        A_0 = (sbyte) num;

        returnlocal;

    Unity引擎下,Mono编译出的程序集,由于采用与.NET相同的格式标准。能够直接被Dotfuscator混淆。但Unity引擎有一些特殊的地方,使混淆工作与一般的.NET程序存在差异。第三节将主要讨论这些特殊点。

    Unity引擎下代码混淆的特殊性

    代码被资源引用[B2] 。Unity的可视化编辑特性在设计上的关键之处在于使代码能够以组件的形式依附到资源实例上。相比传统游戏,Unity的两类资源(scene和prefab)不仅包括数据,还包括附加在资源上的类对象。也就是说,这两类资源的存储格式中存在唯一标识某代码类型的数据。混淆流程必须不破环这种对应关系才能使资源上的代码逻辑正确被执行。(Unity这样设计的意义并不是本文讨论的重点,而另一篇分享个人对Unity可视化编辑的理解的文章中将会详细说明。)

    发布到Web的Unity项目,在生成播放器可执行包(*.unity)的接口中,将编译程序集和打包这两个步骤捆绑在的一起。我们没办法像普通.NET程序那样,对编译出的程序集进行混淆后再打到播放器可执行包中。

    UnityEngine按函数名进行调用。MonoBehaviour是Unity引擎的一个重要的组件基类。其上的很多方法,Unity是通过方法名称进行访问的,如Awake、Start、Update等等。这些方法如果在混淆中被改名,将使方法调用失败。这个问题相对比较好处理,Dotfuscator的重命名功能提供了排除配置。我们只要得到继承于MonoBehaviour的所有类型,就能生成相应的排除配置,告知Dotfuscator不要对这些方法进行重命名。生成的配置节选如下[B3] :

    <option>xmlserialization</option>

    <excludelist>

    <type name="CEventMgr|CGameRoot|…|…" regex="true" excludetype="false">

    <method name="Update"regex="true" />

    <method name="LateUpdate"regex="true" />

    <method name="FixedUpdate"regex="true" />

    <methodname="Awake" regex="true" />

    <customattributename="System.Runtime.CompilerServices.CompilerGeneratedAttribute"regex="true" />

    <method name=".*"regex="true" />

    <field name=".*"regex="true" />

    </type>

    <type name=".*"regex="true">

    <customattributename="ANoRenameInObfuscate" regex="true" />

    </type>

    <type name=".*"excludetype="false" regex="true">

    <method name=".*"regex="true">

    <customattributename="ANoRenameInObfuscate" regex="true" />

       </method>

    </type>

    思路

    何时混淆?由于Web项目编译和打包的过程是捆绑在一起的,官方没有提供独立的接口。(之前有跟官方反馈,但目前官方并没有提供具体计划。)想自己来分析官方的打包格式是行不通并且不太科学的。仅剩的办法就是自己将代码编译成DLL,混淆之后再添加到Unity项目中。

    顺着这条思路,笔者在《QQ乐团》项目上作了尝试。将项目中所有执行相关的代码(不包括编辑器扩展的代码)移出,指定相关的Unity依赖库,编译成DLL。再将此DLL复制到原项目中。这时意料之中的事情发生了——项目中所有资源上的代码引用全部丢失。为了找到资源对代码的映射形式,笔者调整Unity编辑器的设定,将资源的序列化格式改为文本格式,并进行对比分析。发现资源中是通过一个GUID来对应具体代码的[B4] 。(如下)

    m_ObjectHideFlags: 1

    m_PrefabParentObject: {fileID: 0}

    m_PrefabInternal: {fileID: 100100000}

    m_GameObject: {fileID: 100000}

    m_Enabled: 1

    m_EditorHideFlags: 0

    m_Script: {fileID:11500000, guid: 8ae38faa3fc9f91418a5a9872bcc4b0f, type: 1}

    m_Name:

    mInt: 1

    mFloat: .5

    中的类型虽然还没有进行过混淆,但GUID已经发生了变化。将新的GUID替换到资源文件中,引用关系果然恢复了。

    Unity引擎下的特殊问题都是可以解决的。于是顺着这思路,开发了若干工具,得到了前后GUID的对应关系,并扫描所有资源以进行GUID的替换。另一方面,在混淆之后,类型的变量名发生了改变,资源中变量名赋有具体的值,也需要替换资源中的变量名对应到混淆后的变量名。这一切花费了不少的精力,终于是把工具都做成了。

    然而人算不如天算,最终导致此方案走进死角的是一个之前很难意料到的问题:Unity引擎在处理DLL中的模版类型时存在缺陷——DLL中的模版类型没有GUID,不能被资源所引用。这个问题在Unity官方网站上有少量反馈,而官方承认了这个bug,且没有给出解决方案。而《QQ乐团》的项目在UI操作上比较广泛地使用了模版类型,去除模版的使用谈何容易。就这样,这么一个不经意的问题为这个尝试的方向画上了句号。

    “系着枷锁跳舞”,这句话是形容的是在各种条件约束下尽可能的追求解决方案的一种状态。总结之前的失败,最终还是找到了实际可行的改进方案,并成功应用到《QQ乐团》的Web版本和微客户端版本上。

    最终的思路是将项目进行分层。独立出一个不被资源引用的,包含最敏感的协议解析和各个系统模块的“逻辑层”,将逻辑层的代码独立编译成一个DLL,进行混淆再包含到项目中。逻辑层之外的代码主要包括被资源引用到的,或是系统模块部分接口定义这样的不太敏感的内容,姑且称为“行为层”。为了让逻辑层可以独立编译,我们要求逻辑层可对行为层进行引用,而行为层则只能通过留在行为层的逻辑层接口访问逻辑层。这样我们就保护了我们最重要的代码,同时绕过了资源引用代码的问题。

    这个方案对项目架构提出了一定的要求。一是要求敏感代码和资源保持独立,需要一个框架来加载各个模块,而不是直接将模块代码直接附在场景物体的资源中。二是要求层次清晰,不允许反向依赖。有利于《QQ乐团》项目的消息是,《QQ乐团》从最早期就实现了一个较清晰的架构管理方法。因此花费了一定的时间进行分层,和实现接口访问机制后,就成功执行了这个方案。

    实际混淆步骤。《QQ乐团》是使用VisualBuild来执行版本构建和发布流程的。以下介绍版本构建中混淆相关的流程:

    从Unity项目的Assets目录中拷贝出逻辑层的代码目录(CodeGameLogic)。和编辑器扩展代码(避免混淆后编辑器扩展代码对逻辑层的依赖丢失导致编译出错)。

    调用Unity.exe命令行编译剩余的行为层部分:

    这个函数实际执行了:

    BuildPipeline.BuildPlayer(new string[] {"Assets/obfuscated.unity" }, "WebPlayerObfuscated",

    BuildTarget.WebPlayer, BuildOptions.None);

    Editor程序集(也就是编辑器扩展程序集)时编译失败,中断编译过程,避免在BuildPlayer过程结束时构建生成的DLL被清理掉。BuildPlayer之前故意在Editor目录下弄一个错误的代码文件即可。

    将生成的行为层DLL拷贝到逻辑层构建目录。行为层DLL的路径是在项目的Library/ScriptAssemblies下,有Assembly-CSharp.dll和Assembly-CSharp-firstpass.dll两个文件。另外也拷贝逻辑层依赖的其它DLL到构建目录,包括UnityEngine.dll,以及项目Plugins目录下的依赖库。

    调用Mono的编译器mcs编译逻辑层DLL——CodeGameLogic.dll。编译命令如下:

    生成DotObfuscator的配置文件”WebCfg.xml”。这里是用自己编写的工具,扫描CodeGameLogic.dll中的类型,得到不能被混淆的类型名和方法名,加入到配置文件的排出列表中。如“三。3”小节所示。

    调用DotObfuscator对CodeGameLogic.dll执行混淆,得到混淆后的CodeGameLogic.dll:

    将混淆后的CodeGameLogic.dll拷贝到项目中,然后构建项目。这里要注意的是,如果是构建Web项目,需要将dll拷贝到Plugins目录。如果是Standalone(即客户端)项目,直接拷贝到Assets目录下即可。另外,这次构建是不可以有编译错误的,所以第1部需要移除Editor目录下的编辑器扩展的代码。

    接下来将构建好的项目与资源合并,就可以得到完整的混淆版本。

    总结:

    Unity项目的代码反编译较为容易。需要在重视代码混淆工作。

    Unity项目的代码混淆方案实施起来限制较多。本文介绍的方案是笔者知晓的目前唯一可用的混淆方案。对项目的架构分层有强制性的要求。最好是在项目初期就考虑如何对项目进行分层,将需要保护的内容放置在被混淆的层中。

    展开全文
  •  为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则。 Unity3D 引擎  Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个...
  •  这里写下关于Unity3D对于内存的管理与优化.Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载...
  • 自学Unity3D比较辛苦和困难,找到一些Unity3D资源,与君共勉。 Unity3D 3d射击游戏源码 EZFPS Multiplayer FPS Kit http://www.idoubi.net/unity3d/complete-project/282.html Unity3D 暴力之城游戏源码 Full Game ...
  • Unity3D内存管理

    2014-08-28 14:01:50
     这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里...
  • Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?这介绍这些改进之前先放出...
  • Unity 3D中的内存管理

    2017-05-14 11:24:23
     这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载...
  • 大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。最近博主发现博主的文章被很多的网站(如游戏蛮牛)等非法转载,在转载的过程中博主原来的文章出处和链接均被去掉,更让博主觉得...
  • MVC在桌面应用程序,以及网页架构上面用的比较多,那么怎么应用到Unity3d中呢,下面就带大家去了解这个设计框架,以及如何在Unity中应用。 二、MVC介绍 简介 MVC全名是Model View Controller...
  • 博主终于有时间来研究新的东西啦,今天博客向和大家一起交流的内容是在Unity3D游戏开发中使用SQLite进行数据库开发,坦白来讲,在我的技术体系中Web和数据库是相对薄弱的两个部分,因此正好这段时间项目需要和服务器...
  • Unity3D官方教程:WebGL 什么是 Unity WebGL? 创建一个Unity WebGL项目
  • 案例来源:Unity3d - Flappy Bird 资源:Flappy Bird Asset Unity3d官方案例之Flappy Bird(上篇) 本案例来自Unity3d官方案例教程,一切资源均为官方视频内提供。 游戏介绍:  本案例是实现之前很火的一...
1 2 3 4 5 ... 20
收藏数 2,166
精华内容 866
关键字:

unity3d 项目源代码管理