unity3d的功能和应用_unity3d应用嵌入到wpf应用 - CSDN
  • Unity3d 引擎原理详细介绍

    万次阅读 2014-03-25 13:22:52
     Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个platforms.Unity3D由游戏引擎编辑器。该引擎包含的软件组件,在游戏的研究与开发中最常见的经常性的任务。发动机所涵盖的主题包括声音,图

    体系结构

       为了更好地理解游戏的软件架构和对象模型获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的它的主要原则

    Unity3D 引擎

       Unity3D的一个屡获殊荣的工具,用于创建交互式3D应用程序多个平台.Unity3D游戏引擎编辑器该引擎包含的软件组件游戏的研究与开发最常见的和经常性任务发动机涵盖的主题包括声音,图形,物理和网络功能该引擎支持C#Boo和JavaScript脚本编程

    另一个部分是Unity编辑,作为脚本和其他组件包含游戏场景设置和游戏预览窗口(见图4)分层对象检查项目面板集成开发环境它还配备了几个多语言脚本编辑器和一个独特的预制装配系统,将在后面解释

     

                                                              图4:Unity3D编辑

     

    有几个Unity许可证。Unity基本功能有限的免费PCMACWebdevelopment.Other平台完整的功能集[15]需要购买额外的许可证

    虽然有很多免费软件和专有替代游戏引擎虚幻引擎C4引擎选择了Unity的原因如下

    *可以部署在Windows,Mac OSXWeb浏览器,Wii游戏机iPhone,iPad的Android,微软Xbox 360和PlayStation 3它甚至在未来计划增加闪存Linux部署部署possbilities提供很多的可能性使用游戏引擎游戏引擎货币化进一步研究。

     *Unity社区非常支持引擎,以及编辑器是有据可查的

    *发动机是比较容易学习和工作通过提供所有的工具快速原型和迭代以及快速脚本编译支持快速软件开发的想法

    *可能部署的iPhone,iPad和iPod touch的iOS基本许可证其他厂商相比相对低廉的价格创建机甲坦克使用Unity3.0C#脚本和MonoDevelop的IDE进行开发你可以找到一个Unity教程附录

    Unity3D的简史

     下列日期说明2001和2011年[16]之间的Unity引擎的演变
     ◾2001年Unity技术在2001年开始开发自己的游戏引擎当时主要诱因创建游戏这些游戏的基础创造了良好的工具[1]。
     ◾2003在2003年公司,由此产生的引擎将是一个伟大产品本身的
     ◾2005在2005年Unity1推出苹果的WWDC的舞台上
     ◾2007Unity2.0在2007年推出增加地形引擎实时动态阴影和视频播放等等
     ◾2008在2008年推出UnityiPhone卡通网络推出FusionFall,游戏已经播放超过800万人次

     ◾20102010年Unity3.0发布几十个功能,如资产管理和光照贴图

     ◾2011团结超过500开发者和60网络播放器安装。

    游戏架构

     机甲坦克架构组成模块和Unity场景架构

     主要模块

        本节介绍了最重要的模块子系统级别他们关系。游戏的建筑风格是一个对象数据capsules.The下面的UML组件图说明子系统及其关系网络

     

    游戏逻辑

       此模块管理当前玩家AI配置倒计时timerand当前的游戏状态暂停等待网络回复

    AI(人工智能(Artificial Intelligence) ,英文缩写为AI

       AI模块包含背后的逻辑单元球员AI.The单位AI寻路或障碍物避免使用不同转向行为控制单元状态。AI管理组的行为和活动寻路更高的层次上管理播放机的所有播放器模块

    人工智能机器学习保存和加载它的数据使用持久性数据模块的接口

    Persistant data持久性数据

       此模块是负责数据之间不同的游戏sessions.Among其他应可用于保存和加载存储查找表和寻路模块管理学习AIaccumulateddata机器

    Game actors游戏参与者

      游戏参与者在游戏中地形,单位或建筑物他们的3D模型获得通过Unity3D的渲染管线的可视化每场比赛演员拥有AI模块控制它的行为

    Steering behaviours指导行为

      指行为计算力量,影响如何以及如何快速自主游戏代理能动,应该可以用于避障,人流简单寻找任务

    Pathfinding寻路

      模块负责创建一个pathgrid障碍物信息收集提供各种寻路请求aninterface为了获得更好的性能一些信息保存到从磁盘中加载

    Input输入

      此模块跟踪用户的输入对其进行处理生成反馈。

    Network网络

      网络模块负责所有游戏演员状态管理保持比赛状态在两台机器上都保持一致以避免抖动网络单元运动网络game.Another责任

    GUI

     图形用户界面(GUI)显示所有按钮,菜单在小地图倒数计时器它也负责这些元素的功能交互依赖用于此目的游戏逻辑模块

    3D渲染

      该模块主要管理Unity3D的场景的主摄像头确定需要渲染的对象并把它们发送通过渲染管线Unity3D的封装渲染细节而且还提供了通过像素和顶点着色器访问

    Unity场景设置

      在游戏中一个表示Unity3D的场景下面是一个典型的场景设置在Unity层次(一)(二)现场窗口看起来像

                                         

                                                                       Unity层次的地图

                

                                                                              场景视图的地图

    现在所有的游戏对象顶部面板底部进行说明。

    CWalls

      这个对象包含自定义绘制节点和墙壁边缘一种使用自定义绘制墙壁calculatethem取决于地图的几何

    Directional light(定向光)

      此灯仅用于计算地形光照贴图关闭之后由于性能的原因

    Game Music(游戏音乐)

      持有游戏的主要音乐和播放现场启动

    GameController(游戏控制器)

      GameController游戏物体持有管理所有的游戏对象管理游戏的逻辑包括以下对象

    CursorController(光标控制器):

       管理光标的外观和背后的逻辑

    GameInstantiator(游戏实例化):

       这个重要游戏对象负责实例其他对象需要创建非特异性顺序

                      

                                     GameInstantiator in the Inspector

                      

                                       GameController in the Hierarchy

      GameInstantiator持有地图PathCreator路径创建和管理障碍管理球员配置设置是用来处理用户输入InputControl游戏物体游戏场游戏物体和参考玩家游戏物体上的建筑物referenes定义了播放区域的地图

     它还包含玩家的重生点和自定义路径和墙壁引用

    GUI

      拥有地图的所有GUI对象

    Machine Learning Controller

       游戏物体控制的所有功能机器学习需要

    spawn1, spawn2

      实际玩家的重生点重生点的标志是绿色立方体“场景视图  

    HPaths

       定义路径节点在地图边缘定义节点场景编辑标记并概述红线     

    Main Camera(主摄像机)

       现场主摄像头和音频监听所有的3D声音相机的角度观察     

    PlayArea(游戏场)

      定义实际可玩的地图区域

    Base Prefabs(基地预制)

      散落在地图上的建筑物

    Terrain(地形)

       Unity地形对象

    TestRunner

      一个物体,用于运行单元测试Unity3D的单位testingframeworkSharpUnit

    MVC Pattern(MVC模式)

      Unity引擎的设计鼓励MVC模型 - 视图 -控制器面向engineering.In我的情况下结构看起来像这样

     

                                                                  图5:MVC模式体系结构表示

    模型包含了所有的游戏对象组件和数据文件游戏物体渲染器和摄像机对象访问

    视图呈现模型和主要管理Unity3D的引擎渲染它需要accessthe持有模型3D模型,纹理材质和效果它还具有什么输入选项影响

    控制器接收用户输入并调用模型对象方法反应这是在我的游戏中所表示输入子系统用户能影响输入视图

    Multiplatform Development(多平台发展)

      Unity允许部署项目在不同的平台上轻微变化。演示和功能在很大程度上是保持取决于平台的capabilities.However在某些领域在不同的设备上输入机制存在重大分歧

      抽象工厂设计模式应用于设计这些组件

    The Abstract Factory Pattern抽象工厂模式

                                 

                                                                                        图6:抽象工厂模式

    抽象工厂模式(见图6保护客户不同平台上实现相同的概念不同APC与平台是一家集AbstractProduct这些类表示一个概念,是支持所有抽象工厂platforms.An声明创建单一产品经营ConcreteFactory代表一个特定平台

    客户端只使用抽象工厂抽象产品方法,因此一个平台的具体实施保护

    Input and Persistant Data(输入和持久性数据)

       主要有两个方面的游戏不同的实施要求是输入机制和usageof持久性文件数据Unity3D中不支持plattform数据库这就是为什么机甲坦克使用持久性数据在磁盘上二进制文件所有平台得到了他们对于自己的能力自己实施支持的文件格式

     

    为了保持可读性和灵活性以下适应跨平台的输入处理抽象工厂模式

                  

                                                                         图7:输入子系统结构摘自

     

    这仅仅是一个所涉及的所有平台和命令,选择用于演示的摘录

    InputManager附加到游戏物体在场景中InputControl调用CommandImplementorExecute方法的每一帧里面的更新功能执行方法CommandImplementor遍历所有添加命令,检查他们执行情况表示满意,并调用Execute方法,如果是这样

     

    输入子系统组成部分的抽象工厂模式

                 

    iOS+Unity

         机甲坦克被创造的过程迭代开发,这是什么原因为什么游戏已经播放任何调整之前为iPad

         本章介绍分析面临的挑战和解决方案移植机甲和坦克的iPad

    Maximum Polygon Count(最高多边形计数)

         其中一个最明显的限制,适用于iPad™游戏的多边形数量的图形芯片能够呈现每个frame.It横空出世超过30多边形,每帧开始下降,低于25 FPS的帧率对iPad在3D建模软件通过手动消除边缘和应用预定义的算法减少多边形从一开始某些型号甚至rebuiilding减少多边形计数,目前在所有平台上多边形数量是:

                  

    平均多边形数量大约是每单位300如果所有的24个敌人和播放器单元的相机拍摄的在一帧中产生多边形的数量将是7200,平均约8500在最坏情况下24runners.Adding最大4000地形多边形平截头体的其余部分的地形得到扑杀,最重的将给予12500GPU多边形渲染

    Draw Call Reduction and Lights(绘制减少呼叫灯)


    即使在移动设备上不俗的表现,更重要的每帧绘制调用的数量一场平局发出呼叫GPU每次绘制一个模型如果模型有n子网格就会造成至少Ñ战平calls.EveryGUI质地,选择飞机和健康添加一个调用到现场

    额外抽奖调用另一个来源像素光照,导致额外绘图调用一个pass.That就是为什么合并成一个模型中所有子网型号不使用动态照明所有模型和地形纹理的灯光英寸光影烘烤计算每个纹理获取静态光源照亮奠定了光照贴图纹理的亮度看上去好像他们的灯光的影响虽然没有计算模型图8显示了几个模型,而无需光照贴图灯光效果

             

                                      图8:熄灭纹理材质着色器没有灯光烘烤模式截图

            

                                                                    9:游戏扩大统计窗口右上角视图

    这是可以结合Unity若干个对象共享相同的材料制成在运行时在一个单一的绘制调用的绘制在一起这种方法被称为动态配料[18]。图9显示了66战平调用以下来源所造成的一个场景

    (GUI)图形用户界面


    8绘制调用之缩小贴图按钮,,倒计时倒计时文本+24个+8号楼地图+1相机地图现货总结41GUI造成绘制调用

    Terrain(地形)


         4通话其中每个质地

    Visible Models(可见模型)

       14平局呼吁每个模型会导致比3战平调用自身的一个用于单元一个healthbar网格和一个用于选择平面网格数字都可以解释Unity的动态配料

    Terrains(地形)


         Unity3D中没有支持地形为iOS直到Unity3.4发布于2011年7月[19]。为了找到最佳的解决方案机甲坦克,地形实施两种可供选择的方式已经过测试模拟地形在3D程序一个3D建模程序地形分割成不同的部分见图10)分区的效果大部分分部视锥Unity扑杀meansthat只有至少部分可见得到呈现

                             

                                                                                图10:仿照地形突出部分

    这种技术被丢弃创造新的地形,因为这个过程会非常complicatedcompared Unity地形系统纹理大小非常大的质量受到影响*地形地形移动系统移动系统一个解决方案,通过Unity资产商店T4M地形可以用于移动设备可以转换成Unity的地形原来,这个解决方案的性能是不够游戏

    地形最终解决方案使用Unity地形引擎具有非常低的质量设置是唯一可能Unity3.4发布于2011年7月加入Unity地形对移动通信系统支持

    GUI-Optimization(GUI优化)


    Unity引擎提供两种方式来实现GUI一种方式是使用Unity的GUI系统UnityGUI需要它的功能一个特殊的功能calledinside名为OnGUI()执行每帧两次onceevery事件这个系统只用于主菜单,并暂停菜单allvalues​​需要计算OnGUI功能

    GUI纹理用于所有其他GUI元素GUI按钮和小地图上以维持性能GUI纹理平面图像中显示的2D和每帧渲染一次

    Script-Optimizations(脚本优化)


    为了授予脚本的性能便宜的方法进行跟踪profiler.It横空出世被称为最昂贵方法可以通过寻路转向行为子系统寻路已被优化如下文所述在AI部分有人还提出确保昂贵的功能,如转向行为和其他AI程序不会调用每一个帧

    展开全文
  • unity3d 虚拟现实在各行业的应用

    千次阅读 2014-01-17 19:09:26
    unity3d虚拟现实在城市规划中的应用 城市规划一直是对全新的可视化技术需求最为迫切的领域之一,虚拟现实技术可以广泛的应用在城市规划的各个方面,并带来切实且可观的利益:展现规划方案虚拟现实系统的沉浸感...
    unity3d虚拟现实在城市规划中的应用
    城市规划一直是对全新的可视化技术需求最为迫切的领域之一,虚拟现实技术可以广泛的应用在城市规划的各个方面,并带来切实且可观的利益:展现规划方案虚拟现实系统的沉浸感和互动性不但能够给用户带来强烈、逼真的感官冲击,获得身临其境的体验,还可以通过其数据接口在实时的虚拟环境中随时获取项目的数据资料,方便大型复杂工程项目的规划、设计、投标、报批、管理,有利于设计与管理人员对各种规划设计方案进行辅助设计与方案评审。


    规避设计风险虚拟现实所建立的虚拟环境是由基于真实数据建立的数字模型组合而成,严格遵循工程项目设计的标准和要求建立逼真的三维场景,对规划项目进行真实的“再现”。用户在三维场景中任意漫游,人机交互,这样很多不易察觉的设计缺陷能够轻易地被发现,减少由于事先规划不周全而造成的无可挽回的损失与遗憾,大大提高了项目的评估质量。


    加快设计速度运用虚拟现实系统,我们可以很轻松随意的进行修改,改变建筑高度,改变建筑外立面的材质、颜色,改变绿化密度,只要修改系统中的参数即可。从而大大加快了方案设计的速度和质量,提高了方案设计和修正的效率,也节省了大量的资金,提供合作平台。
    虚拟现实在娱乐、艺术与教育方面的应用
    丰富的感觉能力与3D显示环境使得VR成为理想的视频游戏工具。由于在娱乐方面对VR的真实感要求不是太高,故近些年来VR在该方面发展最为迅猛。如Chicago(芝加哥)开放了世界上第一台大型可供多人使用的VR娱乐系统,其主题是关于3025年的一场未来战争;


    英国开发的称为“Virtuality”的VR游戏系统,配有HMD,大大增强了真实感;1992年的一台称为“Legeal Qust”的系统由于增加了人工智能功能,使计算机具备了自学习功能,大大增强了趣味性及难度,使该系统获该年度VR产品奖。另外在家庭娱乐方面VR也显示出了很好的前景。
     
    虚拟现实在军事与航天工业的应用
    模拟与练一直是军事与航天工业中的一个重要课题,这为VR提供了广阔的应用前景。美国国防部高级研究计划局DARPA自80年代起一直致力于研究称为SIMNET的虚拟战场系统,以提供坦克协同训1练,该系统可联结200多台模拟器。另外利用VR技术,可模拟零重力环境,以代替现在非标准的水下训练宇航员的方法。
    虚拟现实在室内设计中的应用  


    虚拟现实不仅仅是一个演示媒体,而且还是一个设计工具。它以视觉形式反映了设计者的思想,比如装修房屋之前,你首先要做的事是对房屋的结构、外形做细致的构思,为了使之定量化,你还需设计许多图纸,当然这些图纸只能内行人读懂,虚拟现实可以把这种构思变成看得见的虚拟物体和环境,使以往只能借助传统的设计模式提升到数字化的即看即所得的完美境界,大大提高了设计和规划的质量与效率。


    运用虚拟现实技术,设计者可以完全按照自己的构思去构建装饰“虚拟”的房间,并可以任意变换自己在房间中的位置,去观察设计的效果,直到满意为止。既节约了时间,又节省了做模型的费用。
    展开全文
  • Unity3D是一个跨平台的游戏开发引擎,它能够帮助开发者快速构建游戏场景,进行游戏开发与发布。...另外,Unity3D官方版本目前可以运行在WindowsMac OS上,当然还有可以运行在Linux上的非官方版本。

    《Unity3D入门教程》会带领零基础的初学者,一步步学会使用Unity3D来开发简单的应用程序,走近游戏开发的世界。本系列教程虽然不会面面俱到地深入到全部的知识点,但是会涉及到所有入门阶段所需要掌握的必备技能。通过本教程的学习,可以快速“入门”。师傅领进门,修行在个人。当我们掌握了基本的框架和技能后,就可以自由选择自己喜欢的点去深入学习。本教程是博主自己学习Unity3D时候总结的学习笔记,基本能够涵盖住入门阶段所需要学习的点。希望能都对读者有哪怕那么一点点的帮助,也不枉敲了那么久的键盘,码了那么些字。Enjoy Unity3D!


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

    1 Unity3D介绍

    Unity3D是一个跨平台的游戏开发引擎,它能够帮助开发者快速构建游戏场景,进行游戏开发与发布。它支持将开发好的作品发布到Windows、Mac OS、Android、iOS、Linux等多种平台。另外,Unity3D官方版本目前可以运行在Windows和Mac OS上,当然还有可以运行在Linux上的非官方版本。


    打开Unity3D官网,可以开到如下的画面,可见Unity3D的主要目标还是集中在游戏开发上,也包含VR/AR的开发。


    2 Unity3D下载与安装

    https://store.unity.com/cn/?_ga=1.18936120.1875984010.1467707827

    打开上面Unity商店网址,会看到如下的界面。


    选择免费的个人版,点击进入。


    可以直接点击下载安装程序,也可以点击底部最右侧的“Unity旧版本”。我一般会选择后者,因为这样就可以自由选择要安装的版本。开发中最好采用一样的版本,否则在打开别的程序的时候总会根据Unity版本重新生成工程,来回转换难免不会出现什么隐含的Bug。点击“Unity旧版本”后,实际上看到的列表中也包含最新的版本。


    根据你的系统选择相应的版本下载即可。例如我的是Win10 64位,我就点击5.4.1的“下载(Win)”按钮,选择Unity编辑器(64位)下载。我没有选择最新的版本,因为我已经有其他的程序是使用这个版本编辑的。如果你喜欢最新版,完全可以下载最新版,都是没问题的。

    之后在你的下载目录会有“UnitySetup64-5.4.1f1.exe”这个文件,双击运行。一路点继续,到安装路径的页面可以更改安装路径,其他都默认即可。安装完后,如果没有使用破解补丁破解,界面是灰白色的,破解后是深灰色的。其实使用功能上没什么区别,反正现在有了免费的个人版,对于我们做研究来说,破解与否没差别。


    第一次打开Unity可能需要登陆账号,可以随便注册一个登陆即可。点击“NEW”,输入工程名和路径,点击“Create project”。


    至此,表示软件安装成功,可以正常运行了。

    3 程序打包发布

    按Ctrl+S,保存当前场景,可以命名为MyScene。之后在Project中的Assets下就会有已经保存的场景。然后File——Build Settings,出现下面的面板


    点击“Add Open Scenes”就能将当前场景添加到待生成的列表里,然后左下方的平台就选择“PC, Mac & Linux Standalone”,然后点击Build。然后会要求你选择发布程序的路径和输入名称。如果和我一样选择默认路径,发布程序名称为“test”那么会在工程目录下看到发布出的程序。


    双击test.exe,会出现如下对话框:


    将分辨率设置为640*480,勾选Windowed,点击Play,就会看到如下场景:


    好了,现在我们已经成功发布了一款应用程序。尽管这个程序什么功能都没有,但是它仍然是我们使用Unity3D成功发布的第一个应用程序,具有非凡纪念意义。它表明我们已经走在Unity3D开发之路上了。


    展开全文
  • Unity3D功能 小技巧 小教程 小原理(持续更新...) 1.Unity的.NET版本是2.0 按道理来说,C#能用的功能Unity也能用,但是Unity的.NET却不是最新版 要是用一些别的DLL或者接入SDK的时候有DLL,就会发现有一些DLL的.NET...

    Unity3D小功能 小技巧 小教程 小原理(持续更新...)

    1.Unity的.NET版本是2.0

    按道理来说,C#能用的功能Unity也能用,但是Unity的.NET却不是最新版

    要是用一些别的DLL或者接入SDK的时候有DLL,就会发现有一些DLL的.NET版本是4.0,Unity便无法使用这些DLL,相当困扰。

    2.关闭Request error提示 Edit→Preferences→General→Show Asset Store search hits

    3.设置物体物理互不碰撞

    Edit-Project Settings-Physics 打开物理管理器(Physics Manager)

    里面可以设置层级相互间的碰撞

    4.进度条

    通过改变UI的FillAmount值

    public UnityEngine.UI.Image healthBar;

    void Start() {healthBar.fillAmount = 0.0f;}

    5.Unity连接多媒体SDK开发

    体感:Kinect、Leapmotion

    AR:Vuforia Metiao EasyAR VoidAR

    VR:gear 暴风 oculus HTC

    触屏: Input.Touch EasyTouch(插件)

    7.Inspector面板修改

    例如添加一个按钮:

    [CustomEditor(typeof(出现按钮的脚本名)), CanEditMultipleObjects]
    public class 自定脚本名: Editor {

    public override void OnInspectorGUI(){
    base.OnInspectorGUI();//绘制原本的信息//
    if(GUILayout.Button("自定义按钮名字")){
    方法函数();
    }
    }}

    8.平台预处理

    #if UNITY_EDITOR
    platform = "hi,大家好,我是在unity编辑模式下";
    #elif UNITY_XBOX360
    platform="hi,大家好,我在XBOX360平台";
    #elif UNITY_IPHONE
    platform="hi,大家好,我是IPHONE平台";
    #elif UNITY_ANDROID
    platform="hi,大家好,我是ANDROID平台";
    #elif UNITY_STANDALONE_OSX
    platform="hi,大家好,我是OSX平台";
    #elif UNITY_STANDALONE_WIN
    platform="hi,大家好,我是Windows平台";
    #endif
    Debug.Log("Current Platform:" + platform);

    9.加载Resources

    GameObject instance = Resources.Load("资源名字") as GameObject;
    GameObject cube = Instantiate(instance) as GameObject;
    cube.transform.position = this.transform.position;

    10.Only one exe只允许打开一个程序

    int count=Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length ;
    if (count> 1)
    {// MessageBox.Show(count.ToString());调试使用
    //杀掉当前
    Process.GetCurrentProcess().Kill();}

    11.物体de 旋转 and 位移

    旋转:

    (瞬间)transform.localRotation = Quaternion.Euler(new Vector3(x,y,z));

    (缓慢)transform.rotation = Quaternion.Slerp( a , b , t );

    位移

    (速度相关) transform.position=Vector3.MoveTowards(transform.position,tempUpdatePos,Time.deltaTimeDisShakeThreshold);
    (固定时间)this.transform.Translate(Vector3.normalize(目标位置-自身位置)
    (Vector3.Distance(自身位置, 目标位置)/(所用时间 * Time.deltime)));

    2d 向某方向移动

    moveDirection = mTarget.transform.position - mSelf.transform.position;

    moveDirection.Normalize();
    float target = Mathf.Atan2(moveDirection.y, moveDirection.x) Mathf.Rad2Deg - 90f;
    mSelf.transform.rotation = Quaternion.Slerp(mSelf.transform.rotation, Quaternion.Euler(0, 0, target), turnSpeed
    Time.deltaTime);
    _controller.SetForce(speedX,speedY));

    6.改变鼠标位置和隐藏鼠标

    using System.Runtime.InteropServices;

    [DllImport("user32.dll")]

    public static extern int SetCursorPos(int x, int y);

    Void XX(){ SetCursorPos(0, 0); }

    [DllImport("user32.dll")]
    public static extern int SetCursorPos(int x, int y);
    void Start () {
    //隐藏
    Cursor.visible = false;
    }

    17.控制全局音量

    通过 AudioListener.volume = *;来控制场景场景音量

        AudioListener.volume = *;
    
        AudioListener.volume = *;

    18.UGUI

    对于Text 使用材质和Outline可以制作出艺术字体

    Mask可以遮掩 对于制作一些动画比较好

    19.鼠标点击设置UI位置(不同分辨率设置有不同 此处实例为1920*1080 可在调试模式下使用)

    GetComponent<Animator>().SetTrigger("Clip");
    // 获取目标对象当前的世界坐标系位置,并将其转换为屏幕坐标系的点
    Vector3 Pos = Camera.main.WorldToScreenPoint(transform.position);
    // 设置鼠标的屏幕坐标向量,用上面获得的Pos的z轴数据作为鼠标的z轴数据,使鼠标坐标与目标对象坐标处于同一层面上
    Vector3 mousePos = new Vector3(Input.mousePosition.x(1920.0f/(float)Screen.width) - 1920/2, Input.mousePosition.y(1080f/(float)Screen.height) - 1080/2,Pos.z);//先乘一个GameView折扣(GameView要设置为1920*1080) 然后减去中心点的差值
    Debug.Log(mousePos.ToString());
    transform.position = mousePos;

    20.使用AssetsBundle压缩文件有奇效

    首先制作一个空项目,加入AB代码后,导出有28M

    然后我是使用了一组72帧的动画,这组动画大约有4M

    众所周知,unity对2D Sprite格式处理会使图片很大,由原本的图片大小67k变到了Unity里的1m一张

    然后我把动画加到了UGUI里 然后导出,震惊的94M总共

    最后使用AB压缩,观察压缩的文件,最大的image里就2M

    比原图还要小

    导出结果当然也小

    AB真是太好用了 建议独立物件都用AB

    21.重置动画(播放动画第一帧)

    firstAnimName = GetComponent<Animator>().GetCurrentAnimatorClipInfo(0)[0].clip.name;
    GetComponent<Animator>().Play (firstAnimName,-1,0);

    22.Mono中文乱码

    【Tools】-->【Option】, 然后选择【Fonts】,双击【Text Editor】,选择【Monospace】字体 Normal 10

    23.uLua使用方法

    注意AppConst里的LuaBundleModel变量,如果想使用AssetBundle模式,该值置为true,但是每次修改lua代码,需要执行菜单栏上的LuaFramework->Build XXX Resource,将lua资源打包,否则,你修改的lua逻辑不会更新并执行。

    如果LuaBundleModel置为false,则lua代码会时时更新。

    此外,修改C#代码,一定不要忘了执行菜单Lua->Clear wrap files,然后重新生成Gen Wrap + Binder

    确定逻辑无误后,注册C#类,打开"CustomSettings.cs",注册我们的类。"_GT(typeof(XXXXXX)),"。最后,执行上面第2步的Lua->Clear wrap files,Gen Wrap + Binder。此时,会生成一个叫MyHelloWorldWrap.cs的文件,在Assets\LuaFramework\ToLua\Source\Generate目录下,其实所有在CustomSettings中注册的C#类都会生成Wrap文件,保存在该目录下。

    24.使用VS作为C#编辑器

    vs可以断点调试和为Unity提供的便捷简直不要太好

    下载VS Tool for unity即可断点调试 (选择相应VS版本) 地址:https://marketplace.visualstudio.com/items?itemName=SebastienLebreton.VisualStudio2015ToolsforUnity

    但是vs的快捷键蛋疼得很,--修改快捷键ctrl+w关闭当前窗口的方法:http://www.cnblogs.com/ayanmw/p/3161286.html

    编译器相关 如果使用Vs的 #region 和 #endregion 用于代码的隐藏缩放,对于项目代码管理,相当好用。Mono也有缩放模式,有点碍眼..

    1. Process.Start()

    一个C#的API 可以用于打开一个网页..应用..或者进程..或者控制面板内的功能..例如打印..

    public void PrintFile(){

    System.Diagnostics.Process process = new System.Diagnostics.Process(); //系统进程

    process.StartInfo.CreateNoWindow = false; //不显示调用程序窗口

    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;//

    process.StartInfo.UseShellExecute = true; //采用操作系统自动识别模式

    process.StartInfo.FileName=path; //要打印的文件路径

    process.StartInfo.Verb="print"; //指定执行的动作,打印:print打开:open…………

    process.Start(); //开始打印}

    5.Unity加载图片动画(动画比较多的情况)

    (1.UnityAnimation播放,直接全选png序列帧图(卡超级久) 然后拖到面板上(卡很久),会自动生成序列播放的animator。但我发现超过300图之后有可能会出现不明报错(大概因为输出问题),1k张感觉就没什么希望了,最重要的是在unity里1080p的图转成sprite,都会变成10m一张,导致项目发布之后更是奇大无比。
    (2.播放mov,可以尝试播带透明通道的mov,但需要一个shader,具体我不会写,在网上找到的也不太好用,各种问题(抠色会失真和有噪点,提取透明or黑白遮罩会出现不同步)。
    (3.Load的方法,unity有3种。(需要在start前预先加载完,不要一边播一边加载会卡的。)
    ① LoadPrefab,不考虑。
    ②LoadResources,先load资源文件夹内的,然后播放。目前测试超过700张Unity会迷之不加载,估计是load的东西太大。
    ③LoadAssets。因为是一张张地load,不会出现太大而不加载的问题。目前使用这个办法播放

    ④AB加载

    25.远程Mac鸡可以使用vnc viewer连接 ,Cornerstone作为项目管理

    26.求向量夹角

    向量 = 目标位置 - 共同起点位置

    v3.angle(向量A,向量B)

    转载于:https://blog.51cto.com/14058389/2313023

    展开全文
  • Unity3D基本入门及功能介绍

    万次阅读 多人点赞 2017-06-10 22:44:17
    本章主要是 Unity3D 的基础快速入门篇,通过本章的学习,能让初学者们快速的掌握 应用 Unity3D 软件。 本章导读 ...的学习,你可以迅速的掌握 Unity3D 的软件结构,各个板块具体的功能和作用以
  • 在之前的一篇博文中描述了Unity3D应用嵌入WPF应用的具体实现方式,但仅仅是解决了最基本的技术问题,想要将其具体的应用到项目中还需要具体的细化。经过近期在项目中的实践进行了细化,现将本人最近的一些过程整理...
  • unity3d应用到什么领域

    千次阅读 2014-03-19 13:30:36
    Unity3D用来制作游戏已经是目前市场上的一个发展趋势,而且有越来越多的公司与开发者不断的加入,那么Unity3D应用是否能涵盖到各种领域?如果使用Unity3D制作建筑景观模拟?没错,这已是一个新时代的潮流,  如果...
  • 在本系列中,我们将在Unity3D中使用丰富的控件创建一个简单的3D游戏。 第一部分将介绍如何设置Unity3D。 第二部分将教您如何使用C#控制Unity3D。 本系列的第三篇也是最后一篇文章将深入研究使用Unity3D实际制作一...
  • Unity3D的安装

    千次阅读 2019-07-08 16:58:50
    Unity3D是一款游戏开发软件,如何去获取它呢? 1 进入Unity3D官网 这个过程会比较慢,耐心等待 2 点击Get start 进行获取 3 选择个人版(免费) 这时会获取Unity Hub Unity Hub桌面端应用程序旨在简化你打开Unity...
  • 今天呢,我们来说说Unity3D中的角色控制,这篇文章并非关注于Unity3D中的某项具体内容,而是博主在经过大量的实践后所得的感悟。今天的文章从内容上可以分为2种模式、1个组件、1种模型,希望对大家学习Unity3D起到...
  • Unity3D+SignalR实现实时数据传输

    千次阅读 2018-01-07 16:29:55
    在前面的文章中写过如何搭建SignalR服务端客户端,也写过如何将Unity3D应用嵌入到WPF中,问题是SignalR服务端WPF客户端实时通信很简单,SignalR服务端怎么与Unity3D应用实时传输数据呢?下面就开始讨论了。 ...
  •  Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个platforms.Unity3D由游戏引擎编辑器。该引擎包含的软件组件,在游戏的研究与开发中最常见的经常性的任务。发动机所涵盖的主题包括声音,图形,
  • [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    万次阅读 多人点赞 2014-10-02 09:59:53
    在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础上实现了手势旋转、放缩等功能。今天呢,我们继续来研究Unity在Android平台上扩展的内容。众所周知,Unity3D是一个强大的跨平台游戏引擎,...
  • 本书以具体项目结构开发的角度,结合 Unity3D 层级式的综合开发环境、视觉化编辑、详 细的属性编辑器动态的游戏预览的特点,在软件界面介绍及功能使用方面以分级、分阶、 分段手法来向大家详尽阐述概念使用方法...
  • 在本系列中,我们将在Unity3D中使用丰富的控件创建一个简单的3D游戏。 第一部分将介绍如何设置Unity3D。 第二部分将教您如何使用C#控制Unity3D。 本系列的第三篇也是最后一篇文章将深入研究使用Unity3D实际制作一...
  • Unity3D基础2-1】Unity3D从业介绍

    千次阅读 2020-05-13 15:40:25
    Unity3D是一款多平台、综合型游戏开发工具,我们熟知的《王者荣耀》、《绝地求生》以及VR/AR应用均使用了Unity3D进行开发,是现今最优秀的3D引擎之一。随着VR、AR技术全球火爆,手游增长惊人,“吃鸡”游戏大火,...
  • 目前,能够实现3D页游...本人从多方收集到可注册的Unity3D页游测试发现,当下的Unity3D技术应用尤其在国内正遭遇着尴尬而无奈的窘迫境地,原因为何?大伙不妨先看看其中7款游戏测试数据: 《骑士的远征》(国产) ...
1 2 3 4 5 ... 20
收藏数 12,131
精华内容 4,852
关键字:

unity3d的功能和应用