unity3d 订阅
Unity是游戏引擎开发商 [1-2]  ,实时3D互动内容创作和运营平台 [3]  。 [2]  包括游戏开发、美术、建筑、汽车设计、影视制作在内的创作者运用Unity实现。 [2]  Unity提供一整套软件解决方案,可用于创作、运营和变现实时互动的2D和3D内容 [2]  ,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 [2]  2019年使用Unity制作的游戏和体验已在全球范围内覆盖将近30亿台设备 [4]  ,月均下载量超过30亿次 [5]  。并且其在2019年的安装量已超过370亿次。 [4]  全平台(包括PC/主机/移动设备)游戏中有一半都是基于Unity创作的。 [5]  Unity提供易用实时平台,开发者可以在平台上构建各种AR和VR互动体验 [5]  ,全球超过60%的AR和VR内容都用Unity制作。 [5]  2020年5月9日,Unity宣布收购加拿大技术服务公司Finger Food,拓展工业应用版图。 [6] 展开全文
Unity是游戏引擎开发商 [1-2]  ,实时3D互动内容创作和运营平台 [3]  。 [2]  包括游戏开发、美术、建筑、汽车设计、影视制作在内的创作者运用Unity实现。 [2]  Unity提供一整套软件解决方案,可用于创作、运营和变现实时互动的2D和3D内容 [2]  ,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 [2]  2019年使用Unity制作的游戏和体验已在全球范围内覆盖将近30亿台设备 [4]  ,月均下载量超过30亿次 [5]  。并且其在2019年的安装量已超过370亿次。 [4]  全平台(包括PC/主机/移动设备)游戏中有一半都是基于Unity创作的。 [5]  Unity提供易用实时平台,开发者可以在平台上构建各种AR和VR互动体验 [5]  ,全球超过60%的AR和VR内容都用Unity制作。 [5]  2020年5月9日,Unity宣布收购加拿大技术服务公司Finger Food,拓展工业应用版图。 [6]
信息
开发公司
Unity Technologies
类    别
创作引擎、开发工具 [2]
员工数
约3500名 [2]
CEO
John Riccitiello [7]
别    名
U3D、Unity3D
属    性
软件公司 [2]
成立时间
2004年 [4]
支持维度
2D、3D、VR、AR、MR [2]
外文名
Unity
编程语言
C# [2]
Unity基本介绍
Unity3D(7张) Unity [8]  引擎使开发者能够为超过20个平台创作和优化内容 [5]  ,包括iOS、安卓、Windows [2]  、Mac OS、索尼PS4、任天堂Switch [2]  、微软Xbox One、谷歌Stadia、微软Hololens、谷歌AR Core、苹果AR Kit、商汤SenseAR等等 [2]  。公司超过1400人规模的研发团队让Unity的技术跟随合作伙伴迭代 [5]  ,确保在最新的版本和平台上提供优化支持服务。 [5]  Unity还提供运营服务来帮助创作者 [2]  ,包括:Unity Ads广告服务、Unity游戏云一站式联网游戏服务、Vivox游戏语音服务、Multiplay海外服务器托管服务 [2]  、Unity内容分发平台(UDP)、Unity Asset Store资源商店 [2]  、Unity云构建等。 [2]  Unity在中国、比利时、芬兰、加拿大、法国、新加坡、德国等16个国家拥有44个办公室 [5]  ,创作者分布在全球190个国家和地区。 [5] 
收起全文
精华内容
下载资源
问答
  • Unity3D

    千次阅读 2013-02-22 12:03:17
    内容简介特色unity3d常见问题版本相关新闻使用此引擎的游戏如何学习unity3d 编辑本段内容简介 Unity3D(12张) Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、...


    编辑本段内容简介

    Unity3D

    Unity3D(12张)
    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhoneAndroid平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。

    编辑本段特色

    综合编辑
    通过Unity简单的用户界面,玩家可以完成任何工作。这些为玩家节省了大量的时间。
    图形动力
    Unity对DirectX和OpenGL拥有高度优化的图形渲染管道。
    资源导入
    Unity支持所有主要文件格式,并能和大部分相关应用程序协同工作
    一键部署
    Unity可以让玩家的作品在多平台呈现。
    Wii的发布
    Unity让业界最流行的游戏平台软件更容易开发。
    iPhone发布
    Unity让革命性的游戏开发降临革命性的设备。
    着色器
    Unity的着色器系统整合了易用性、灵活性和高性能。
    地形
    低端硬件亦可流畅运行广阔茂盛的植被景观。
    联网
    从单人游戏到全实时多人游戏。
    物理特效
    Unity内置的NVIDIA®PhysX®物理引擎带给玩家生活的互动。
    音频和视频
    实时三维图形混合音频流视频流
    脚本 Unity支持3种脚本语言:JavaScript,C#,Boo。
    Unity资源服务器 Unity资源服务器是一个附加的包括版本控制的产品。
    光影 Unity提供了具有柔和阴影与烘焙lightmaps的高度完善的光影渲染系统。
    文档
    Unity为玩家提供逐步的指导、文档和实例方案。

    编辑本段unity3d常见问题

    1:天空盒有接缝怎么解决?
    答:在贴图导入设置里设置Wrap Mode为"Clamp".
    2:DDS格式怎么不显示?
    答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化.
    3:Unity如何动态载入外部模型等文件?
    答:可以使用AssetBundle
    4:脚本编辑器有语法提示吗?
    答:有的,Win版使用Ctrl+I,Mac版使用Ctrl+>.
    5:如何使用烘焙贴图(多重纹理)?
    答:不要使用Shell贴图,直接将烘焙图赋予贴图的"自发光"通道之上.
    6:怎么屏蔽Webplayer右键菜单?
    答:<param name="disableContextMenu" value="true" />
    7:为什么水面没有实时反射效果?
    答:只有专业版才支持这种反射效果.
    8:怎么做摄像机漫游动画?
    答:Max正常制作摄像机漫游动画,倒到Unity中后,将Unity的Camea拖拽到Max导出的摄像机Gameobject物体之上,作为其子物体即可.
    9:如何自定义Webplayer载入Logo及进度条?
    答:<param name="logoimage" value="Logo文件名" />,<param name="progressbarimage" value="进度条名" />,<param name="progressframeimage" value="进度条外框名" />.
    10:GUI上怎么使用中文字?
    答:导入任意中文字体,然后定义GUISkin字体为该字体即可.
    11:购买一个授权可以安装几台电脑?
    答:可以安装于2个系统之上比如一个Win版一个Mac版.
    12:Max文件扔到Unity中怎么说导入失败?
    答:下载最新版Fbx插件,用Max导出Fbx文件然后扔Unity中.
    13:如何不让摄像头穿透模型,离模型近了就像模型露面了?
    答:设置相机的Near clip plane,调小一点,但是不要给负数.
    14:怎么用双面贴图?
    答:Unity中可设置双面Shader,最简单有效的办法是直接做成双面的实体模型.复杂一点的方法可以在材质脚本中的相应的SubShader中的一个Pass块中加入cull off,即关闭反面裁剪[1]
    15:导入的Fbx模型尺寸小于Max中的尺寸?
    答:在Unity中该文件的导入设置中设置缩放因子为1.
    16:如何给相机添加Glow效果?
    答:选中相机对象,在菜单中选中Component-Image Effects-Glow赋予该组件即可(专业版才支持此特效)
    17:怎么设置Webplayer默认尺寸?
    答:到菜单Edit-Project Settings-Player中设置Default Web Screen尺寸即可.
    18:怎么设置可执行文件的启动Banner?
    答:到菜单Edit-Project Settings-Player中设置Resolution Dialog Banner.
    19:如何设置雾效?
    答:到菜单Edit-Render Settings中开启Fog及设置Fog Color等即可.
    20:如何设定默认Skybox天空盒?
    答:到菜单Edit-Render Settings中设置Skybox Material即可. (欢迎加入unirt3d百度唯一问答团队,参考资料[2]
    21.unity3d虚拟现实的设计流程?
    答:max 制作模型,导出fbx,导入unity,设计相机代码,设计ui,build 。

    编辑本段版本

    Windows版本:Unity 4.0.0f7
    Mac版本:Unity 3.4.2f2
    iPhone版本:Unity iPhone 1.7
    android版本:android2.2
    大陆发布版本
    Unity3D PRO 虚拟现实、跨平台应用程序开发引擎(商业版[3]
    Unity iOS Pro移动终端发布平台[4]
    Unity3D PRO 虚拟现实、跨平台应用程序开发引擎(教育版)[5]
    2012年11月15日,Unity Technologies公司正式推出Unity 4.0版本,新加入对于DriectX 11的支持和Mecanim动画工具,以及为用户提供Linux及Adobe Flash Player的部署预览功能。
    Unity 4.0被分为了Unity免费版和Unity Pro两种版本,两者在功能上没有任何区别,只是前者为用户提供了一个为期30天的使用许可,但可以立即下载使用,而后者则需要用户付费(1500美元)后才能进行下载。[6]

    编辑本段相关新闻

    最近PC、MAC、iPhone、ipad、PS和Xbox360等众多平台的引擎效能成为了业界关心的焦点问题,而Unity3D游戏引擎技术研讨会在中国的召开,无疑吸引了各家厂商的目光。
    在上海举行的本届研讨会,由韩国国民大学游戏教育学院和中国东华大学联合举办。大会不仅是对Unity3D游戏引擎技术的介绍,更通过此次会议提升中国先进游戏技术的开发能力,培养后备研发人员。
    Unity3D游戏引擎技术研讨会最早于今年5月在韩国举行。据悉,现在十种以上的新引擎开发,都是采用了Unity3D游戏引擎技术。部分开发商利用2010年ChinaJoy展会之机,也展示了该引擎的运行效果。已有不少厂商同开发商签订了提前的引擎预定协议。

    编辑本段使用此引擎的游戏

    激战海陆空
    神庙逃亡2(Temple Run 2)
    Unity3D页游《推倒Online》
    Unity3D游戏《萌战记》
    Unity游戏《格子RPG》
    U3D游戏《武士2: 复仇》
    坦克英雄(网页游戏)
    战舰

    编辑本段如何学习unity3d

    第一步首先了解unity3d的菜单,视图界面。这些事最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。
    第二步理解场景里面的坐标系统,输入系统,简单的向量概念。Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。
    第三步学习创建基本的场景的一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系
    第四步学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。
    第五步学习脚本的生命周期,Start,UpDate,ONGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。
    第六步进一步学习摄像机,灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进出都是一个很复杂的主题。
    第七步一些更高级的概念:向量的加减法点乘差乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。[7]
    词条图册更多图册

    Unity3D(12张)

    参考资料
    扩展阅读:
    展开全文
  • 每周更新unity3d视频教程,从入门到就业,官方unity3d培训,上千门实时更新课程,供学员在线观看学习,unity3d游戏开发,可以让学员随时随地学习! 免费网上学习unity3d自学教程,国内名师机构专业授课,O基础快速学习,1小时...

    每周更新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

    展开全文
  • Unity3DUnity3D证书

    千次阅读 2019-02-13 15:08:05
    一、前言 话说,英语有英语等级证书,计算机也有等级证书,会计证,工程师证,那么从事Unity开发的工程师,有没有专属的职业资格证书呢。这个还是有的,分别有以下几...Unity3D美术师 Unity Certified 3D Artist ...

    推荐阅读

    一、前言

    话说,英语有英语等级证书,计算机也有等级证书,会计证,工程师证,那么从事Unity开发的工程师,有没有专属的职业资格证书呢。这个还是有的。

    二、Unity 认证制定标准

    Unity是最受欢迎的技术技能之一。
    有一个最高的预测增长率,
    在未来两年超过35%。
    -----------Burning Glass,就业市场分析平台

    Unity初级工程师 Unity Certified Associate

    在这里插入图片描述
    证明你已经掌握了基本的Unity技能,并且理解了游戏开发的核心概念。Unity助理认证可以帮助你在申请学校、实习甚至工作时脱颖而出。了解如何为这一入门证书做准备,并在Unity认证.

    Unity开发工程师 Unity Certified Programmer

    Unity3D美术师 Unity Certified 3D Artist

    在这里插入图片描述
    自信地申请,在这个不断发展、利润丰厚的领域找到你梦寐以求的工作。这些认证是为所有行业的有抱负和有经验的专业人员设计的。无论你是在申请你的第一份团结工作,还是想把你的职业提升到更高的水平,团结证书都可以帮助你验证你的能力,并表明你对专业标准的承诺。选择Unity程序员或Unity3D艺术家或两者都做!了解如何为这些证书做准备,并在Unity认证.

    Unity高级游戏开发工程师 Unity Certified Expert Gameplay Programmer

    高级技术美工:绑定和动画工程师 Unity Certified Expert Technical Artist:Rigging & Animation

    高级技术美工:阴影和效果工程师 Unity Certified Expert Technical Artist:Shading & Effects

    在这里插入图片描述
    把你的事业提升到最高水平。成为一个Unity认证专家,并展示你的专业技能在三个专业角色之一:游戏程序员,技术艺术家:绑定和动画,或技术艺术家:阴影和效果。Unity专家证书是推荐的人积累了各种先进的,实际经验:如经验开发游戏或交互式的,实时应用程序等。了解如何为这些专家认证做准备,并在Unity认证.

    三、如何认证

    1.首先注册一个账号
    https://wsr.pearsonvue.com/testtaker/profile/create/SignUp.htm?clientCode=UNITY&locale=en_US
    在这里插入图片描述
    注意全部填入英文,就是说能用英文用英文,不能用英文用拼音,反正中文不支持。

    2.登录之后进入这个网站
    https://wsr.pearsonvue.com/testtaker/registration/SelectExamPage/UNITY?conversationId=3487617
    在这里插入图片描述
    选择报名科目
    比如选择 UCP-572 Unity Certified Programmer


    顺便提一下,这个Pearson VUE中文名是培生国际认证,其主要业务是提供世界水准的学术、应用学习以及职业技术证书和考试,在全球范围向学校和学生提供爱德思Edexcel、BTEC、LCCI等全球通行的学术和职业资格证书,以及PTE、Pearson VUE等多样化的考试测评服务,助力全球的学习者升学或就业。
    培生爱德思是由两个历史悠久、有影响力的英国颁证机构爱德思考试局和伦敦工商会考试局合并而成, 2005年成为全球领先的教育机构培生集团的一员,组建了培生国际认证业务(Pearson Qualification International)。借助培生集团广阔的教育平台、优质教育资源和技术,培生国际认证的发展开始了新的篇章。
    ●从小学到高中学术证书,再到职业认证,培生国际认证已为世界各地数百万人提供了培训和考试服务。
    ●致力于提供世界一流的国际认证课程,帮助各类学习者充分发挥其潜力,为未来人生做好一切准备,而不仅仅限于考试本身。


    3.选择考试选项
    在这里插入图片描述
    在家或者办公室是行不通的,只能选择At a local test center,本地的考核中心

    在这里插入图片描述
    价格是199美元 o(╥﹏╥)o

    4.找到离你最近的考核中心,预定时间就行了
    在这里插入图片描述
    四、后言
    关于,培训资料,以及考试会考什么内容,这些内容可以进unity官网查看
    https://unity3d.com/learn
    https://certification.unity.com/?_ga=2.183816678.1798322751.1549942112-743246773.1530693732
    在这里插入图片描述

    展开全文
  • 深入浅出Unity3D——第一篇

    万人学习 2015-02-05 09:58:48
    Unity3D基础知识、游戏算法一网打尽。
  • [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse

    万次阅读 热门讨论 2014-10-01 18:17:38
    今天呢,博主将为大家送上Unity-Android系列的最后一篇文章《Unity3D游戏开发之从Unity3D到Eclipse》。通过前面的学习,大家已经知道通过在Eclipse中为Unity编写插件的方法,我们可以实现在Unity与Android API的通信...

           

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei

    转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/39717795

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


           各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。首先祝大家能够度过一个愉快的十一长假。今天呢,博主将为大家送上Unity-Android系列的最后一篇文章《Unity3D游戏开发之从Unity3D到Eclipse》。通过前面的学习,大家已经知道通过在Eclipse中为Unity编写插件的方法,我们可以实现在Unity与Android API的通信。可是不幸的是,这种方法并不能对所有的Android API奏效,在某些时候,我们需要反客为主,将Unity项目导出为Android项目,然后在Eclipse中继续修改游戏的内容。这种方法在《Unity3D游戏开发之Unity与Android交互调用研究》这篇文章中已经提及,不过并没有真正地进行过研究。之前有个叫@SHANlover的朋友问我,能不能写一篇Unity项目导出Eclipse的文章,因此博主便抽空研究了下这种方法,从而有了今天的这篇文章。首先,我们来创建一个简单地场景:


           好了,创建完场景以后我们就可以直接编写一个脚本CubeScripts.cs来控制场景中的Cube:

    using UnityEngine;
    using System.Collections;
    
    public class CubeScripts : MonoBehaviour {
    
    	/// <summary>
    	/// 定义旋转速度
    	/// </summary>
    	public float RotateSpeed=45;
    
    	/// <summary>
    	/// 定义摄像机的最近距离	
    	/// </summary>
    	private float mNear=2.5F;
        
    	/// <summary>
    	/// 摄像机当前距离
    	/// </summary>
    	private float mDistance=5F;
    
    	/// <summary>
    	/// 定义摄像机的最远距离
    	/// </summary>
    	private float mFar=7.5F;
    
    	/// <summary>
    	/// 摄像机的缩放速率
    	/// </summary>
    	private float mZoomRate=0.5F;
    
    	/// <summary>
    	/// 主摄像机
    	/// </summary>
    	private Transform mCamera;
    	
    	/// <summary>
    	/// 在Start()方法中我们设定了游戏体的名称,因为我们在
    	/// Android项目中需要用到这个名称,同时获取主相机对象
    	/// </summary>
    	void Start () 
    	{
    		this.name="Main Cube";
    		mCamera=Camera.main.transform;
    	}
    	
    	/// <summary>
    	/// 在Update()方法中我们让Cube按照一定的速度进行旋转
    	/// </summary>
    	void Update () 
    	{
    		transform.Rotate(Vector3.up * Time.deltaTime * RotateSpeed);
    	}
    
    
    	/// <summary>
    	/// 定义一个放大的方法供外部调用
    	/// </summary>
    	public void ZoomIn()
    	{
    		mDistance-=mZoomRate;
    		mDistance=Mathf.Clamp(mDistance,mNear,mFar);
    		mCamera.position=mCamera.rotation * new Vector3(0,0,-mDistance)+transform.position;
    	}
    
    	/// <summary>
    	/// 定义一个缩小的方法供外部调用
    	/// </summary>
    	public void ZoomOut()
    	{
    		mDistance+=mZoomRate;
    		mDistance=Mathf.Clamp(mDistance,mNear,mFar);
    		mCamera.position=mCamera.rotation * new Vector3(0,0,-mDistance)+transform.position;
    	}
    }
    
    这段脚本十分地简单,没有什么可说的,在这里我们定义了两个方法ZoomIn和ZoomOut,这两个方法我们将提供给Android来调用。我们将这段脚本绑定到Main Cube这个对象上。接下来,我们将项目Build一下,这里我们将项目的PackageName设为com.android.unity2eclipse,然后将其导出为一个Android项目:


              那么,这样我们就得到一个可以在Eclipse中打开的Android项目。可是这个Android项目我们怎么样使用呢?在金曾玺老师《Unity3D手机游戏开发》一书中是将Unity导出的Android项目作为一个库,然后再用一个新的Android项目去调用这个库。这本书中所使用的Unity版本是4.X,而博主所使用的Unity版本是4.5.1。最初博主就是按照这种思路去编写Android程序,可是在经历了无数次的失败后,博主开始怀疑这种方法的正确性。带着尝试的念头,博主直接运行了由Unity导出的Android项目,结果程序成功地在手机上运行了。如图:


           那么,接下来我们不妨冷静地分析下从Unity导出的这个Android项目,我们可以看到整个项目的目录结构是这样的:


    在这个目录结构中,我们可以看到它是一个标准的Android项目,在libs中的unity-class.jar就是我们在前面的文章中所使用过的jar库文件。而在assets文件夹中我们可以看到Unity所依赖的dll文件。在com.android.unity2eclipse这个Package中,我们会发现一个名为UnityPlayerNativeActivity.class的类,该类定义如下:

    package com.android.unity2ecplise;
    
    import com.unity3d.player.*;
    import android.app.NativeActivity;
    import android.content.res.Configuration;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.view.Window;
    import android.view.WindowManager;
    
    public class UnityPlayerNativeActivity extends NativeActivity
    {
    	protected UnityPlayer mUnityPlayer;		// don't change the name of this variable; referenced from native code
    
    	// Setup activity layout
    	@Override protected void onCreate (Bundle savedInstanceState)
    	{
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		super.onCreate(savedInstanceState);
    
    		getWindow().takeSurface(null);
    		setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
    		getWindow().setFormat(PixelFormat.RGB_565);
    
    		mUnityPlayer = new UnityPlayer(this);
    		if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
    			getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
    			                       WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
    		setContentView(mUnityPlayer);
    		mUnityPlayer.requestFocus();
    	}
    
    	// Quit Unity
    	@Override protected void onDestroy ()
    	{
    		mUnityPlayer.quit();
    		super.onDestroy();
    	}
    
    	// Pause Unity
    	@Override protected void onPause()
    	{
    		super.onPause();
    		mUnityPlayer.pause();
    	}
    
    	// Resume Unity
    	@Override protected void onResume()
    	{
    		super.onResume();
    		mUnityPlayer.resume();
    	}
    
    	// This ensures the layout will be correct.
    	@Override public void onConfigurationChanged(Configuration newConfig)
    	{
    		super.onConfigurationChanged(newConfig);
    		mUnityPlayer.configurationChanged(newConfig);
    	}
    
    	// Notify Unity of the focus change.
    	@Override public void onWindowFocusChanged(boolean hasFocus)
    	{
    		super.onWindowFocusChanged(hasFocus);
    		mUnityPlayer.windowFocusChanged(hasFocus);
    	}
    
    	// For some reason the multiple keyevent type is not supported by the ndk.
    	// Force event injection by overriding dispatchKeyEvent().
    	@Override public boolean dispatchKeyEvent(KeyEvent event)
    	{
    		if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
    			return mUnityPlayer.injectEvent(event);
    		return super.dispatchKeyEvent(event);
    	}
    
    	// Pass any events not handled by (unfocused) views straight to UnityPlayer
    	@Override public boolean onKeyUp(int keyCode, KeyEvent event)     { return mUnityPlayer.injectEvent(event); }
    	@Override public boolean onKeyDown(int keyCode, KeyEvent event)   { return mUnityPlayer.injectEvent(event); }
    	@Override public boolean onTouchEvent(MotionEvent event)          { return mUnityPlayer.injectEvent(event); }
    	/*API12*/ public boolean onGenericMotionEvent(MotionEvent event)  { return mUnityPlayer.injectEvent(event); }
    }
    
    相信大多数看过我博客的人都会觉得这个类有点眼熟吧,不错,在之前的《Unity3D游戏开发之在Android视图中嵌入Unity视图》这篇文章中,我们就是利用这个类实现了在Android视图中嵌入Unity视图,只不过当时这个类是定义在Unity的unity-class.jar这个库中的,而更为确切地位置是在com.unity3d.player这个包下面的UnityPlayerNativeActivity类,我们注意到此时这个类是继承自NativeActivity的,在前面的文章中博主曾经提及这个类,它是Android提供给C/C++开发者的接口。换句话说,Unity项目在Android平台上内部依靠的实际上就是NativeActivity接口,只不过Unity自己使用的接口是封装过的,而我们这里使用的接口是直接继承自父类。那么,我们在这一刻就会产生疑问,从这个类从具体实现上来讲主要的功能就是对Activity进行初始化,那么我们在Activity中能够看到什么由谁来决定呢?大家注意到这里有一个SetContentView()的方法,它传入了UnityPlayer类型的参数作为Activity显示的内容。相信从现在开始,大家对Unity提供的Android接口的认识会越来越清晰吧。为了验证我们的想法,接下来,我们来创建一个布局文件activity_main,它的代码定义如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
        <Button
            android:id="@+id/BtnZoomIn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:text="@string/ZoomIn" />
        <LinearLayout  
            android:id="@+id/UnityView"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent"  
            android:layout_above="@+id/BtnZoomOut"  
            android:layout_below="@+id/BtnZoomIn"  
            android:orientation="vertical" >  
        </LinearLayout>
        <Button
            android:id="@+id/BtnZoomOut"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="@string/ZoomOut" />
    </RelativeLayout>
    接下来,我们创建与之对应的Java类文件MainActivity.class:

    package com.android.unity2ecplise;
    
    import com.android.unity2ecplise.R;
    import com.unity3d.player.UnityPlayer;
    
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    
    
    /*我们这里让我们定义的MainActivity继承自Unity导出项目中的UnityPlayerNativeActivity*/
    public class MainActivity extends UnityPlayerNativeActivity 
    {
    	private Button BtnZoomIn,BtnZoomOut;
    	
    	@Override 
    	protected void onCreate (Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		//获取显示Unity视图的父控件
    		LinearLayout mParent=(LinearLayout)findViewById(R.id.UnityView);
    		//获取Unity视图
    		View mView=mUnityPlayer.getView();
    		//将Unity视图添加到Android视图中
    		mParent.addView(mView);
    		
    		//放大
    		BtnZoomIn=(Button)findViewById(R.id.BtnZoomIn);
    		BtnZoomIn.setOnClickListener(new OnClickListener()
    		{
    			@Override
    			public void onClick(View arg0) 
    			{
    				UnityPlayer.UnitySendMessage("Main Cube","ZoomIn","");
    			}
    		});
    		//缩小
    		BtnZoomOut=(Button)findViewById(R.id.BtnZoomOut);
    		BtnZoomOut.setOnClickListener(new OnClickListener()
    		{
    			@Override
    			public void onClick(View arg0) 
    			{
    				UnityPlayer.UnitySendMessage("Main Cube","ZoomOut","");
    			}
    		});
    	}
    }
    
    在这段代码中,我们通过UnitySendMessage调用了Unity中定义的两个方法ZoomIn、ZoomOut。好了,接下来,我们修改配置文件,使主Activity对应于MainActivity类,打开
    AndroidManifest.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        package="com.android.unity2ecplise" 
        android:theme="@android:style/Theme.NoTitleBar" 
        android:versionName="1.0" android:versionCode="1" 
        android:installLocation="preferExternal">
      <supports-screens android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true" 
          android:xlargeScreens="true" 
          android:anyDensity="true" />
      <application android:icon="@drawable/app_icon" 
          android:label="@string/app_name" 
          android:debuggable="false">
        <activity android:label="@string/app_name" 
            android:screenOrientation="fullSensor" 
            android:launchMode="singleTask" 
            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" 
            android:name="com.android.unity2ecplise.MainActivity">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
          <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
          <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
        </activity>
      </application>
      <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17" />
      <uses-feature android:glEsVersion="0x00020000" />
    </manifest>
    如我们所猜测的那样,acivity节点的name属性对应于com.android.unity2ecplise.UnityPlayerNativeActivity。这说明在此之前,Android是以这个类作为主Acivity。现在我们将其改为我们自己定义的类,这样我们就能使用自己定义的布局。同时大家会注意到下面这两行:

          <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
          <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
    之前我们在讲Unity视图嵌入Android视图时曾经碰到过Android视图无法取得焦点的问题,当时就是在配置文件中加入了这样两行代码,此时此刻,大家是不是和博主一样有种大彻大悟的感觉呢。我们运行程序,会发现界面像我们所希望看到的那样被改变了,而且我们可以通过两个按钮来改变视图中立方体的大小:





    这样我们就可以认识到从Unity中导出的就是Android项目,我们可以直接将其修改来达到满足我们要求的目的。至于金曾玺老师的这种方法,在官方API文档中的确有提到过这种方法,不过博主尝试了好久,这种方法都失败了,不知道是不是因为Unity在新版本中已经解决了这个问题,从而可以直接导出可运行的Android项目。

            最后来说说网络上流传的一种方法,据说在Unity中将项目Build下就会在工程目录下的Temp文件夹下生成一个名为StagingArea文件夹,我们将这个文件夹在导入到Eclipse中并将其设为一个库,然后在新建的Android项目中引用这个库,并将这个项目中的assets文件夹覆盖新建项目中的assets文件夹,然后我们只要让主Acitivity继承Unity提供的Android接口中的UnityPlayerActivity即可。这种方法博主并没有去尝试,不过在Build的时候确实会产生这样一个文件夹,不过博主觉得这样是不是有点麻烦了啊,既然Unity导出的Android项目直接就能用,我们何必要再去用这种复杂的方法呢,不过我觉得大致的思路就是这样的,UnityPlayerActivity负责Acivity生命周期的维护,UnityPlayer负责渲染Unity场景中的内容,而我们在Unity中使用的资源都被Unity的引擎在内部进行了处理,总之把握了这些,Unity和Android的交互就基本没什么问题了。好了,谢谢大家关注我的博客,今天的内容就是这样了,希望大家喜欢。


    每日箴言:有些路看起来很近,可是走下去却很远的,缺少耐心的人永远走不到头。人生,一半是现实,一半是梦想。 ——顾城




    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei

    转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/39717795

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    本文源代码下载:Unity项目 Android项目


    展开全文
  • Unity3D开发:向Unity3D中导入外部模型

    万次阅读 2017-12-21 18:50:37
    Unity3D开发:向Unity3D中导入外部模型 转载 2014年04月09日 14:00:07 49677 Unity3D支持多种外部导入的模型格式,这里列出了它支持的外部模型的属性,并且以3D MAX为例,导出FBX文件给Unity...
  • Unity3D】在Unity3d中如何使用MVC框架

    千次阅读 多人点赞 2018-11-06 16:48:05
    MVC在桌面应用程序,以及网页架构上面用的比较多,那么怎么应用到Unity3d中呢,下面就带大家去了解这个设计框架,以及如何在Unity中应用。 二、MVC介绍 简介 MVC全名是Model View Controller...
  • 怎么学unity3d-unity3d学习路线建议

    万次阅读 2017-04-11 14:30:54
    不得不说,Unity3D是一个解放生产力的游戏引擎,自带了各种编辑器,可以进行一系列的可视化操作。 需要注意的是,unity3d适合FPS游戏,物理游戏等中小型的游戏,并不太适合MMO开发。  从最开始接触unity3d,到...
  • [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    万次阅读 多人点赞 2014-09-18 00:08:53
    在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础上实现了手势旋转、放缩等功能。今天呢,我们继续来研究Unity在Android平台上扩展的内容。众所周知,Unity3D是一个强大的跨平台游戏引擎,...
  • 博主今天想和大家分享的是Unity3D中的动态阴影,昨天博主重温了一下自己喜欢的游戏《古剑奇谭2》,发现更新后游戏增加了三个免费的DLC。这三个DLC主要是对主线剧情的一个扩展,博主这里最喜欢的是可控角色初七。从...
  •  1、unity3d如何访问android SD卡的文件  2、如果把android端代码以jar包形式由unity3d调用 闲话不多说,现在咱们进入正题。 一、unity3d如何访问android SD卡的文件  实现效果是unity3d调用android相册或相机,...
  • 这个工具呢,博主在Unity3D游戏开发之反编译AssetBundle提取游戏资源这篇文章中其实已经提到过了,不过因为有些朋友对如何使用这个工具依然存在问题,所以博主决定特地写一篇文章来讲解如何使用disunity来提取Unity...
  • [Unity3D]Unity3D游戏开发之截屏保存精彩瞬间

    万次阅读 多人点赞 2014-09-10 20:28:00
    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/...比如博主在写《[Unity3D]Unity3D游戏开发之自由视角下的角色控制》和《[Unity3D]Unity3D游戏开发之角色控制漫谈》这两篇
  • unity3D Socket与C#服务器第一次连接时通讯正常,客服端段关闭后,unity3D编辑器再次启动连接 unity3D编辑器立即卡死,但是C#服务器与AS3Socket客服端多次连接就正常
  • Unity3d二 如何打开unity3d工程

    千次阅读 2017-08-15 10:13:03
    如何打开unity3d工程 -方法一: 1。进入Unity软件主界面,点击菜单栏上的“File”按钮,子啊弹出来的下拉列表中选中“Open Project”  2。再弹出来的“OPen Project”窗口中点击“OPen Other”按钮,选择游戏工程的...
  • 蓝鸥免费Unity3D教程讲解 Unity3D学习必看教程
  • Unity3D给力材质包

    千次下载 热门讨论 2013-03-21 11:56:23
    Unity3D的材质包,内含例子,主要有玻璃,金属,陶瓷,塑料等一些材质,找不到相关材质的兄弟可以下个哈:)
  • 本文介绍了Unity3D界面及游戏对象基本操作。
  • unity3d文件反编译工具

    千次下载 热门讨论 2011-06-23 17:33:39
    反编译 unity3d文件 点击'new project'选择要反编译的文件。 先点‘New project’选择unity3d文件,再点'Unpack Web Archrive in a directory'选择导出的文件夹。
  • Unity3D】自学之路2.0

    万次阅读 多人点赞 2018-07-09 16:56:35
    一、前言 原文主要讲的是如何从零基础入门,然后一步一步进阶的文章,包括很多学习资料,学习的网址,研究方向等,内容还是比较全面的。大家多多支持一些克森大神,关注一下他的公众号。这篇文章就将原文的内容...
  • Unity3d的安装

    万次阅读 2019-06-19 09:46:45
    Unity3d的安装 ** 1.在线安装 a.获取在线安装程序 第一步:进入官网:https://unity.com/cn 第二步:在主页的底部点击下载 第三步:来到UnityStore,拖到该页面的最底部,点击资源下面的Unity旧版本 第四步:来到Unity...
  • [Unity3D]Unity3D游戏开发之粒子系统

    千次阅读 2014-04-07 18:23:05
     今天为大家分享的是Unity3D中的粒子系统,粒子系统通常用来表现烟雾、云等高级效果,是一个十分注重制作技巧的部分,今天我们将以一个气泡的演示实例来一起学习如何在Unity3D中使用粒子系统。首先我们创建一个...
  • Unity3D入门教程】Unity3D简介、安装和程序发布

    万次阅读 多人点赞 2017-01-06 11:22:19
    Unity3D是一个跨平台的游戏开发引擎,它能够帮助开发者快速构建游戏场景,进行游戏开发与发布。它支持将开发好的作品发布到Windows、Mac OS、Android、iOS、Linux等多种平台。另外,Unity3D官方版本目前可以运行在...
  • Unity3D入门教程】Unity3D之GUI浅析

    万次阅读 2017-01-07 20:30:11
    一款典型的软件都会有交互界面,这些界面包括标签、按钮、拖动条等。Unity3D内置一些基本的GUI命令,可以在屏幕上绘制简单的交互控件。本文主要介绍传统的GUI。而最新加入的UGUI模块将在下一讲中介绍。
  • Unity3d 场景的淡入淡出效果实现 思路 用UGUI设计一张全屏的纯色图片 控制图片的Alpha值,来实现淡入淡出的效果 实现 先新建一张图片,设置锚点为全屏 设置颜色值 新建脚本Fade_Control using ...
  • 当我们将模型导入到Unity3D中时,经常会遇到模型的中心点与物体中心点相差甚远的情况 这种情况通常会对我们的物体位置控制产生一些不利影响(当然这种设置也有其存在的好处……) 要解决类似问题,我们通常可以在...
  • unity3dunity3d第一个项目

    千次阅读 2018-06-09 09:11:59
    打开unity3d之后,进入如下场景 点击new之后新建一个项目,如果是要打开原来已经存在的文件,则应该点击open 第一个是输入projectname,也就是项目名称,locaton也就是项目保存的路径,需要安放在预先建立的...
  • Unity3d中实现点击目标点,然后出现引路线段,动态更新线段等功能 主要用到组件:NavMeshAgent参数就不全部说明了,就说几个重要的吧 Steering->Speed <1>这个是设置自动寻路的速度的,可以把这个值...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,428
精华内容 24,571
关键字:

unity3d