2013-02-04 10:30:07 yang7474020 阅读数 3325

* 原文链接: http://www.unitymanual.com/404.html

经典重现《新仙剑OL》

《新仙剑OL》采用跨平台Unity3D引擎,耗资数千万,历时三年多,由台湾大宇正版授权,“仙剑之父”姚壮宪监制的全球首款Unity3D航母级双端(网页和客户端)中国风MMORPG网络游戏巨作。主打温情牌并且延续了仙剑系列的国风雅韵,人物塑造细腻唯美,场景构建精致逼真。

Unity3D作品大盘点

Unity3D作品大盘点

《蒸汽之城》(City of Steam)

由国内游戏公司参与开发的Unity3D页游《蒸汽之城》(City of Steam)在北美地区呼声颇高,该作是基于U3D引擎的纯3D角色扮演类网页游戏,它拥有目前市面上少有的360度镜头旋转纯3D画面,能给玩家带来3D客户端游戏体验。该作于不久前在北美开启内测,反响较好。

Unity3D作品大盘点

Unity3D作品大盘点

角色扮演游戏《推倒Online》

《推倒Online》是一款由Unity3D游戏引擎开发,角色扮演、实时战斗为主,辅以社区交际元素的Q版3D网页游戏,由沈阳坐标科技于2010年11月公司创立之初开始设计研发。游戏以魔族崛起为世界背景,通过魔族勇士穿越封印征战大陆为引,展开剧情!制作宗旨走反传统搞怪路线,或可爱、或憨厚、或个性的美式魔幻卡通风格,简洁而不失质感。游戏以新颖的战斗模式、激烈的空间攻占、多样的生活交际经历为主要玩点,兼顾技能升级、装备合成、人物属性进化、游戏内小游戏等常规玩法的扩展,给玩家带来了全新的游戏盛宴。

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

  ARPG武侠《绝代双骄》

《绝代双骄》是一款纯中国风武侠ARPG即时战斗网页游戏,采用古龙经典小说为背景,3D游戏画面、无职业角色成长、推图式关卡副本、鼠标右键施放轻功、场景自由反馈等特色内容,为玩家带来非同凡响的3D武侠游戏体验。基于Unity3D游戏引擎,该作在武术特效上做了相当大的细节处理,无拘束轻功飞行、酣畅淋漓的打击感、刀刀见血拳拳到肉,都为游戏带来非常好的口碑。该作近期正在封测当中,有兴趣的玩家不妨关注一下。

Unity3D作品大盘点

Unity3D作品大盘点

网页游戏《将神》

Unity3D网页游戏《将神》是一款以《三国演义》故事为切入点,采用Unity3D引擎开发的页游,以排兵布阵为核心游戏性,以挑战过关为主要玩法,兼有城池建设、角色养成,以Web和智能手机为平台的跨平台3D战争策略类游戏。

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

FPS新作《星际陆战队》

《星际陆战队(Interstellar Marines)》是由丹麦游戏工作室以Unity3D引擎设计制作的第一人称射击游戏。在Untiy引擎的帮助下,《星际陆战队》试图在画面、声效以及游戏玩法方面为玩家创造出一个逼真的宇宙。该游戏将真实的军事行动与团队合作、战术射击进行完美融合,并且引进了角色升级系统与叙事性角色扮演内容。

Unity3D作品大盘点

Unity3D作品大盘点

写实网游《将魂三国》

九众互动旗下三国题材3D写实网游《将魂三国》,依托于名着《三国演义》和三国正史的史实还原,开启最原汁原味的三国游戏时代,向三国史诗经典致敬!在Unity 3D引擎所实现的质感光影效果下,《将魂三国》的场景画面,在写实基础上显得非常质感和硬派,更加体现出三国历史的韵味。

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

即时战术《北欧英灵传》

《北欧英灵传》呈现给玩家一个宏大的北欧神话世界观,游戏主线剧情以历史 记载的神话故事内容被划分为数个章节,以世界树延伸的方式串联起来。该作在游戏画面和美术呈现上抛弃了死板的2D路线,转为引领潮流的3D效果表现,全 3D呈现效果着重于神话故事中各种天马行空的场景描绘。

Unity3D作品大盘点

Unity3D作品大盘点

PC网游戏《星之战记》

《星之战记》是GAMEBAR旗下继《战国春秋》、《古剑奇谭》、《聚仙》之后的一款游戏产品。GAMEBAR旗下“光极源”工作室斥巨资研发的《星之战记》是一款由Unity3D游戏引擎打造的全时3D竞技、APRG类网络游戏,以宏大的太空为背景,高度融合硬科幻元素,给玩家展现了一个自由的虚拟宇宙世界。

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

NBGI《职业棒球MAX 2012》

《职业棒球 MAX 2012》是获得日本棒球机构官方授权、超过480名职业棒球选手会以真实姓名登场的职业棒球游戏。该作采用Unity3D游戏引擎,透过高质量3D绘图逼真呈现球场动态。收录以实际战绩数据为基础的详细选手数据,以及将选手擅长/不擅长的投/打范围以视觉效果显示出来的「热区(ホットゾーン)」系统等内容。游戏中玩家将扮演球队教练,收集选手卡片组成自己的球队,以成为最强球队为目标与全日本玩家展开实时在线比赛。

Unity3D作品大盘点

Unity3D作品大盘点

跨平台3D手游大作《摩卡世界3D》

《摩卡世界3D》由北京摩游世纪科技有限公司历时2年打造全球首款跨平台3D手游大作。作为采用UNITY 3D引擎打造的3D社交游戏,《摩卡世界3D》凭借着高端的游戏品质、细腻写实的画风、爽快的打击感以及手机版3D的DNF玩法,一直深受国内玩家尤其是女性玩家和媒体的广泛关注。

Unity3D作品大盘点

Unity3D作品大盘点

3D战争策略游戏《纵横无双》

《纵横无双》是由91wan平台运营的Unity3D游戏引擎开发的全球首款真3D战争策略网页游戏,游戏中帅气逼真的3D打斗场景,给人身临其境的真实感受;气势恢宏,玩法多样,群雄逐鹿、领地争夺、豪杰相伴、美女成群,尽情享受纵横天下的峥嵘、霸者的辉煌、无双的荣耀。纵横千年,天下无双!

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

第一人称射击游戏《激战海陆空》

《激战海陆空》(英文名: Battleground Europe)是一款由Unity3D引擎制作的大型多人在线第一人称射击游戏(MMOFPS),同时更是当今世界唯一一款同时融合海陆空联合作战的高仿真网络游戏。由曾经世界闻名的《战鸟》的原班开发团队研发而成。1999年Playnet, Inc.公司开始开发这一款游戏,并于2001年封装后在美国开始运营。2005年游戏在欧洲正式上市,至今开发和更新一直在不断进行中。

Unity3D作品大盘点

Unity3D作品大盘点

经营类游戏《魔偶给我冲》

《魔偶给我冲》是基于Unity3D引擎制作的探索模拟经营类游戏,游戏故事发生在被称为“最终乐园”的埃尔芙星球上,华丽而颇具风格化的3D画面向玩家呈现出一个童话般奇诡绚丽的幻想世界。

Unity3D游戏作品大盘点

Unity3D游戏作品大盘点

 

模拟经营网页游戏《航空制造厂》

《AviNation》(航空制造厂,暂译)是由Checkpoint Studios开发中的一款Facebook游戏,采用Unity3D引擎制作,玩家只要完成简单小量的下载、安装就能体验全3D的游戏环境。《AviNation》是款经营、建设类的模拟游戏,在设定完名称与坐落国家后,玩家就将回到1930年,开始建设机场、购买飞机、设定航班,完成一座机能完全的航空中心!由于采用Unity3D引擎的关系,玩家可以自由的旋转各个角度来观察机场中的每一个动态,地勤人员的偷闲抽烟、旅客上下飞机、货物进舱等等。

Unity3D作品大盘点

Unity3D作品大盘点

2019-09-22 14:05:19 fengliaoai 阅读数 12138

每周更新unity3d视频教程,从入门到就业,官方unity3d培训,上千门实时更新课程,供学员在线观看学习,unity3d游戏开发,可以让学员随时随地学习!
免费网上学习unity3d自学教程,国内名师机构专业授课,O基础快速学习,1小时快速入门,7天unity3d自学教程学习,能力快速提升,优质作品随手呈现!

unity3d菜鸟自学教程介绍

unity3d难学吗?

unity3d自学教程目录

unity3d视频教程百度网盘下载

unity3d难学吗?
学习unity3d特效,多来学习路线网看教程,一线游戏特效老师,游戏特效就业安排!学习unity3d特效入门+进阶+精通选择专业才能学得专业!

unity3d自学教程目录
课程介绍:
Unity3d史诗 MMO ARPG 课程《泰斗破坏神》,精心设计将包含200+课时,由视频课时+直播课时+测试课时混合组成。最重头unity3d ARGP课程,完整的 ARPG 网络游戏开发教学。包含多人合作,在线多人游戏开发,角色创建系统,作战系统,RPG系统,技能系统,任务系统,商店系统。

课程大纲:

单机版功能实现

项目概要
登录系统
角色创建、选择、自定义系统
场景加载与游戏存储记录
角色控制
聊天通讯
游戏AI
战斗系统
游戏角色与玩家信息系统
商店系统
道具系统
装备系统
装备与道具掉落
仓库与背包系统
副本系统
任务系统
地图与寻路系统

网络版功能实现

服务端搭建
登录系统
角色选择
游戏场景
聊天功能
角色具体信息
商店系统
道具系统
装备系统
仓库和背包
副本系统
任务系统

unity3d视频教程百度网盘下载
http://www.xuexiluxian.net/unity3d-cainiao-zixue.html

2015-04-21 14:14:53 qinyuanpei 阅读数 32420

各位朋友,大家好,我是秦元培。今天博主想和分享的是使用disunity提取Unity3D游戏素材。这个工具呢,博主在Unity3D游戏开发之反编译AssetBundle提取游戏资源这篇文章中其实已经提到过了,不过因为有些朋友对如何使用这个工具依然存在问题,所以博主决定特地写一篇文章来讲解如何使用disunity来提取Unity3D游戏中的素材。

准备工作

  • disunity:负责对Unity3D的数据文件进行解包
  • Unity3D:负责将导出的数据文件显示出来
  • Bleander或者3DsMax:负责Unity3D数据文件的转换处理,二选一即可。个人推荐Blender。
  • Java:负责为disunity提供编译环境

测试文件

  • 《新仙剑OL》下载
  • 《轩辕剑6外传穹之扉》
  • 《雨血前传:蜃楼》下载

提取流程

好了,在确定做好所有的准备工作后,我们就可以正式开始今天的内容了!

编译disunity

虽然我们可以从disunity的项目主页中下载release版本,不过为了保险起见,博主依然建议大家自行编译disunity。编译的方法是在命令行中切换到disunity的目录,然后执行命令:

java -jar disunity.jar

如果大家的Java环境没有任何问题的话,那么接下来我们就应该可以看到:

[Info] DisUnity v0.3.4

以及各种关于这个工具的使用方法和参数选项。那么好了,现在我们就来熟悉下disunity这个工具的常用命令。disunity命令的基本形式是:

disunity [CommandName] [CommandOptions]

disunity命令

  • dump:将一个二进制的对象转化成人类可以阅读的文本信息。
  • dump-struct:将一个二进制的对象转化为结构化的信息。
  • extract:将Unity3D的数据文件转化为常见的文本、声音、图片等信息。
  • extract-raw:将Unity3D的数据文件转化为可序列化的对象,在extract命令不被支持的情况下使用。
  • extract-txt:和dump命令类似输出转换结果到命令行。
  • extract-struct:和dump-struct命令类似输出转换结果到命令行。
  • info:输出Unity3D的数据文件和AssetBundle文件的变量信息。
  • bundle-extract:释放所有的被打包到AssetBundle中的文件。
  • bundle-inject:将从AssetBundle中打包的文件重新打包

暂时先介绍这些,因为其它的命令我们基本用不到,如果需要深入研究这些命令,可以参考disunity项目中的README.md文件。

解析《新仙剑OL 》的AssetBundle文件

这里我们以游戏目录/assetbundles/NPC/Models/下的s049.unity3d_CC9026FB为例来讲解游戏模型的提取。

模型文件提取

首先我们将这个文件的扩展名改为s049.unity3d,因为这是它原始的扩展名,是Unity3D中导出AssetBundle的一种文件格式。好了,我们将这个文件放在一个无中文路径的目录下,这里以C:\Users\Robin\Desktop即桌面为例。注意首先进入disunity的目录,然后执行命令:

disunity extract C:\Users\Robin\Desktop\s049.unity3d

接下来会在桌面生成一个名为s049的文件夹,在这个文件夹中找到Mesh的子文件夹,会得到一个s049.obj的文件,这个文件就是我们提取到的模型文件。

模型贴图提取

好了,下面我们再来看看怎么提取这个模型文件对应的贴图,在游戏目录/assetbundles/NPC/Texture/下有一个名为s049_1.unity3d_1D2446B9的文件,这就是s049这个模型对应的贴图了。同样地,我们将其重命名为s049_1.unity3d然后执行命令:

disunity extract C:\Users\Robin\Desktop\s049_1.unity3d

接下来在桌面上生成一个名为s049_1的文件夹,在这个文件夹中找到Texture2D的子文件夹,会得到一个名为s049_1.dds的贴图文件,这就是我们要提取的模型s049的贴图文件。

将模型和贴图合并

我们打开Blender并将s049.obj文件导入,然后将场景中默认的灯光和摄像机都删除,因为我们只需要一个模型文件,我们发现在Blender中已经可以看到模型了,因为Unity3D中使用的是FBX模型,所以我们这里将模型文件导出为FBX备用。因为Unity3D可以识别dds类型的贴图,所以对贴图我们不用做任何处理。

童年林月如的模型

打开Unity3D将童年林月如的模型和贴图一起导入,将童年林月如的模型拖入到游戏场景中,因为模型的尺寸没有经过调整,所以模型刚开始可能会比较小,我们可以在Unity3D进行局部的调整。接下来我们会发现模型没有贴图,只要选择这个模型然后在属性窗口为它附上s049_1.dds的贴图文件即可。下面是童年林月如的模型导入Unity3D以后的效果:

童年林月如导入Unity3D后的效果

解析《新仙剑OL》的assets文件

和AssetBundle不同,assets文件是整个Unity3D项目中项目资源的打包集合,比如说Asset文件下的资源都会被打包到这里,所以说解析assets文件可能会有更大的收获吧!因为所有的Unity3D游戏都会有这样的文件,而AssetBundle文件只有在使用了这项技术的游戏项目中才有。比如说在Unity3D中有一个重要的Resource文件夹,这个文件夹打包后被被打包成resources.assets文件。这里我们以xianjian_Data/resources.assets文件为例。首先执行命名:

disunity extract C:\Users\Robin\Desktop\resources.assets

接下来会在桌面生成一个resources的文件夹,打开这个文件夹我们会发现三个子文件夹,分别是Shader、TextAsset和Texture2D。解析的结果似乎有点失望,不过在TextAsset文件夹下我们会找到一个叫做ResourceFiles.txt的文件,这是一个纯文本文件,我们可以直接打开,打开后我们发现它的内容是一个Xml文件,并且在这个Xml文件中定义了游戏中使用的各种资源的路径,不过这些资源都是以AssetBundle的形式来定义的。这说明什么呢?这说明《新仙剑OL》的场景和界面资源是通过动态加载的方式加载到游戏当中的,而这些资源则是通过这个Xml文件来配置和管理的,这符合我们平时在Unity3D游戏开发中的观点和方法。通过这个文件,我们找到了assetbundles/config/movieconfig.unity3d这个文件,这是一个负责维护游戏中场景过场动画的文件。下面我们就来尝试解析这个文件,不过游戏制作方对config文件夹下的内容进行了加密,因为在这个文件夹下面是两个AssetBundle文件,博主尝试用extract和bundle-extract两个命令进行解析,可是得到的只是些文本文件,对我们继续研究没有什么帮助。那么好了,现在我们能够进行解析的只有xinjian_Data/sharedassets0.assets文件了:

disunity extract C:\Users\Robin\Desktop\sharedassets0.assets

这个解出来的话是些没有什么用的贴图文件,看来如果要提取音乐或者图片的话,还需要进行更加深入的研究才行啊。

解析《雨血前传.蜃楼》的assets文件

因为解析《新仙剑OL》的assets文件没有得到什么有用的东西,所以我们接下来来尝试解析《雨血前传.蜃楼》的assets文件。这款游戏是博主比较喜欢的一款游戏,基于Unity3DY引擎,而且这款游戏是作为Unity3D官方范例来推广的,因此研究这款游戏对我们提高Unity3D的资源打包机制会比较有帮助。好了,我们直接上手:

disunity extract C:\Users\Robin\Desktop\resources.assets

哈哈,这款游戏果然没有让我们失望,我们得到了什么呢?

蜃楼中各种Boss的头像

蜃楼中游戏连招视频1

蜃楼中游戏连招视频2

总结

  • 不同的游戏采用的资源配置方案都不同,不过一般可以从resources.assets这个文件入手作为突破点。
  • 如果能拿到游戏中数据配置方案,对于我们提取游戏中的素材会有较大的帮助,因为这样方向性会更强些。
  • 通过AssetBundle动态加载到场景中最好还是采用一个配置表来进行配置,这样便于我们管理和维护整个游戏项目。
  • 如果没有服务器段的干预,理论上只要修改了本地的AssetBundle文件就可以实现对游戏内容和数据的更改,换句话说,可以做外挂和修改器。

声明:我不是在教你破解游戏,我只是在研究AssetBundle打包 !

2017-08-22 10:31:24 cglzy1982 阅读数 607

unity3d游戏,武侠类,需要实现人物多段式轻功
思路就是点击轻功的时候,给角色一个向上的速度并转换动作,摇杆控制方向。把向上或向下的速度,与角色水平方向区分处理。

  1. 角色起跳前判断位置是否属于可跳

    通过Physics.Raycast射线方式,判断角色脚下是否为walk层

   //向下发射线
   bool IsGrounded(float margin, string layerName = "Walk")
    {
        //本角色当前位置提高0.9f,然后向下发出1.2f的射线
        Vector3 SourcePosition = transform.position;
        Vector3 rayStartPoint = SourcePosition + new Vector3(0f, 0.9f, 0f);
        RaycastHit hit;
        LayerMask mask = 1 << LayerMask.NameToLayer(layerName);//射线打到walk层
        if (Physics.Raycast(rayStartPoint, Vector3.down, out hit, margin, mask))
        {
            //Helper.LogError("距离:::::::::::"+hit.distance);
            //Helper.DrawLine(rayStartPoint, hit.point, Color.red);
           //如果射线打到walk层就返回true
            return true;
        }
        else
        {
            return false;
        }
    }  
  1. 起跳设置
    首先人物身上挂CharacterController脚本
    CharacterController controller = GetComponent<CharacterController>();
 获取到CharacterController实例

核心起跳语句:

float gravity=10F; 
float temp =10;
bool checkdis=false;//是否开始轻功计算
void setjump()
{
    //点击起跳按钮后的初速度 只执行一次的
    moveDirection.y = jumpUpSpeed1;
    checkdis = true;
}
void FixedUpdate()
   {
    ......
    if(checkdis)
    {  
    moveDirection.y = temp;//每次必须把上次计算的方向y值结果赋值给方向y值
    //每一帧计算的,高度减值
    moveDirection.y -= gravity * Time.deltaTime;
    temp = moveDirection.y;
    controller.Move(moveDirection * Time.deltaTime);//注意是一个方向
    }
   }
  1. 四段跳 判断动作名,以及下降阶段变动作的判断
        bool result = false;
        //获取当前动作的状态
        AnimatorStateInfo animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
        if (animatorStateInfo.IsName("jumpdown") || CurState == AnimatorState.JumpDown)
        {
            如果已经是降落状态,返回false
            return result;
        }
        if (animatorStateInfo.normalizedTime >= 0.9f)
        {
            //动作播放超过了0.9秒,并且是属于四段跳中的一段,则返回true
            if (animatorStateInfo.IsName("jump1") || animatorStateInfo.IsName("jump2") || animatorStateInfo.IsName("jump3") || animatorStateInfo.IsName("jump4"))
            {
                result = true;              
            }
        }

在fixupdata里面判断动作播放情况,并根据时间(0.9f可以读配置)来改变动作

  1. 如何判断轻功落地停止
    当起跳一段时间后,可以判断人物脚底是不是walk层,依此来判定是否落地
    IsGrounded(1.2f)
2014-09-10 20:28:00 qinyuanpei 阅读数 17457

        各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。今天我们来做点简单的东西,做个什么呢?答案就是截屏。作为一名热爱单机游戏的玩家,博主每次在玩游戏的同时截取游戏中比较喜欢的画面,特别是学习了Unity3D以后玩游戏的时候更多地是从一个游戏设计者的角度来看待游戏,换句话说,可能关注技术的成分更多一点吧。比如博主在写[Unity3D]Unity3D游戏开发之自由视角下的角色控制》[Unity3D]Unity3D游戏开发之角色控制漫谈》这两篇文章时,碰到博主无法把握的问题的时候就是通过玩游戏来体会的,在玩游戏的过程中博主总是会抓取博主比较喜欢的画面,如图,下面是博主收集的部分截图:




       好了,欣赏完美丽的风景,下面我们就来一起学习在Unity3D实现截屏,先给出实现截屏的三种实现方式:

/// <summary>
	/// 使用Application类下的CaptureScreenshot()方法实现截图
	/// 优点:简单,可以快速地截取某一帧的画面、全屏截图
	/// 缺点:不能针对摄像机截图,无法进行局部截图
	/// </summary>
	/// <param name="mFileName">M file name.</param>
	private void CaptureByUnity(string mFileName)
	{
		Application.CaptureScreenshot(mFileName,0);
	}

	/// <summary>
	/// 根据一个Rect类型来截取指定范围的屏幕
	/// 左下角为(0,0)
	/// </summary>
	/// <param name="mRect">M rect.</param>
	/// <param name="mFileName">M file name.</param>
	private IEnumerator CaptureByRect(Rect mRect,string mFileName)
	{
		//等待渲染线程结束
		yield return new WaitForEndOfFrame();
		//初始化Texture2D
		Texture2D mTexture=new Texture2D((int)mRect.width,(int)mRect.height,TextureFormat.RGB24,false);
		//读取屏幕像素信息并存储为纹理数据
		mTexture.ReadPixels(mRect,0,0);
		//应用
		mTexture.Apply();
		
		
		//将图片信息编码为字节信息
		byte[] bytes = mTexture.EncodeToPNG();  
		//保存
		System.IO.File.WriteAllBytes(mFileName, bytes);
		
		//如果需要可以返回截图
		//return mTexture;
	}

	private IEnumerator  CaptureByCamera(Camera mCamera,Rect mRect,string mFileName)
	{
		//等待渲染线程结束
		yield return new WaitForEndOfFrame();

		//初始化RenderTexture
		RenderTexture mRender=new RenderTexture((int)mRect.width,(int)mRect.height,0);
		//设置相机的渲染目标
		mCamera.targetTexture=mRender;
		//开始渲染
		mCamera.Render();
		
		//激活渲染贴图读取信息
		RenderTexture.active=mRender;
		
		Texture2D mTexture=new Texture2D((int)mRect.width,(int)mRect.height,TextureFormat.RGB24,false);
		//读取屏幕像素信息并存储为纹理数据
		mTexture.ReadPixels(mRect,0,0);
		//应用
		mTexture.Apply();
		
		//释放相机,销毁渲染贴图
		mCamera.targetTexture = null;   
		RenderTexture.active = null; 
		GameObject.Destroy(mRender);  
		
		//将图片信息编码为字节信息
		byte[] bytes = mTexture.EncodeToPNG();  
		//保存
		System.IO.File.WriteAllBytes(mFileName,bytes);
		
		//如果需要可以返回截图
		//return mTexture;
	}

}

      接下来,我们来调用这三个方法实现一个简单的截图的例子:

//定义图片保存路径
	private string mPath1;
	private string mPath2;
	private string mPath3;

	//相机
	public Transform CameraTrans;

	void Start()
	{
		//初始化路径
		mPath1=Application.dataPath+"\\ScreenShot\\ScreenShot1.png";
		mPath2=Application.dataPath+"\\ScreenShot\\ScreenShot2.png";
		mPath3=Application.dataPath+"\\ScreenShot\\ScreenShot3.png";
	}

	//主方法,使用UGUI实现
	void OnGUI()
	{
		if(GUILayout.Button("截图方式1",GUILayout.Height(30))){
			CaptureByUnity(mPath1);
		}
		if(GUILayout.Button("截图方式2",GUILayout.Height(30))){
			StartCoroutine(CaptureByRect(new Rect(0,0,1024,768),mPath2));
		}
		if(GUILayout.Button("截图方式3",GUILayout.Height(30))){
			//启用顶视图相机
			CameraTrans.camera.enabled=true;
			//禁用主相机
			Camera.main.enabled=false;
			StartCoroutine(CaptureByCamera(CameraTrans.camera,new Rect(0,0,1024,768),mPath3));
		}
	}


	
       在第三中截图方式中,博主在场景里放了一个名为TopCamera的摄像机,它垂直向下投影到游戏场景里,这样可以使玩家看到场景的顶视图。这里我们用这个相机来测试第三个方法,此时需要先激活该相机。场景设置如图:


        我们下面来看三种方法截图的效果:





        从截图的效果来看,第一种方法的效果是最好的,不过定制化是个问题。第二种方法效果一般吧,感觉这里TextureFormat没有选好吧。第三种效果基本达到了博主想要的要求,不过摄像机的投影范围似乎没有设计好。这里我们发现第二张截图会把编辑器的窗口渲染到里面,博主认为是程序运行的时候,即使将Game窗口放到最大,仍然会受到窗口的影响,后来博主就把程序编译成可执行文件,不过程序运行完之后,博主却没有找到对应的截图。后来查找了官方的API才知道原因是这样的:

Description

Contains the path to the game data folder (Read Only).

The value depends on which platform you are running on:

Unity Editor: <path to project folder>/Assets

Mac player: <path to player app bundle>/Contents

iPhone player: <path to player app bundle>/<AppName.app>/Data

Win player: <path to executablename_Data folder>

Web player: The absolute url to the player data file folder (without the actual data file name)

Flash: The absolute url to the player data file folder (without the actual data file name)

Note that the string returned on a PC will use a forward slash as a folder separator
 

        显然,我们从这里可以知道Application.datapath在不同的平台上对应的位置。对于可执行(.exe,Windows平台)的文件,它对应在和应用程序对应的一个文件夹里,例如可执行文件的名字叫做UnityGame,那么对应的位置就是UnityGame_Data这个文件啦。所以博主的问题应该是出在没有在这里建一个ScreenShot的文件夹,希望大家以后做相关项目的时候注意一下吧。好了,这就是今天的内容了,希望大家喜欢啊。


每日箴言:无所谓好或不好,人生一场虚空大梦,韶华白首,不过转瞬。惟有天道恒
在,往复循环,不曾更改——慕容紫英。




   喜欢我的博客请记住我的名字:秦元培,我博客地址是blog.csdn.net/qinyuanpei。
   转载请注明出处,本文作者:秦元培,本文出处:http://blog.csdn.net/qinyuanpei/article/details/39185195




没有更多推荐了,返回首页