2019-08-11 14:12:31 qq_39588003 阅读数 37
  • Unity3D入门到精通-(2)Profiler工具精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    2734 人正在学习 去看看 张刚

工具类

一、时间

二、等待

三、随机数

四、数学

五、四元数

 

一、时间

  • Time.time:从游戏开始后开始计时,表示截止目前共运行的游戏时间。
  • Time.deltaTime:获取Update()方法中完成上一帧所消耗的时间。
  • Time.fixedTime:FixedUpdate()方法中固定消耗的时间总和。FixedUpdate()每一帧更新的时间可通过导航菜单栏“Edit”==>“Project Settings”==>“Time” 菜单项去设置。
  • Time.fixedDeltaTime:固定更新上一帧所消耗的时间。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class E4_09Time : MonoBehaviour {

	void OnGUI()
    {
        GUILayout.Label("当前游戏时间:"+Time.time);
        GUILayout.Label("上一帧所消耗的时间:" + Time.deltaTime);
        GUILayout.Label("固定增量时间:" + Time.fixedTime);
        GUILayout.Label("上一帧所消耗的固定时间:" + Time.fixedDeltaTime);
    }
}

 

二、等待

WaitForSeconds()方法可以 以秒为单位 让程序(主线程)等待一段时间。该方法的返回值为 IEnumerator 类型,在需要的地方调用 yield return WaitForSeconds()

示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class E4_09Wait : MonoBehaviour {

	IEnumerator Start()
    {
        Debug.Log("开始等待:"+Time.time);
        yield return new WaitForSeconds(2);
        Debug.Log("结束等待:"+Time.time);
    }

}

如果在某个方法中执行等待事件,那么在调用它的方法中同样要添加 IEnumerator 作为方法的返回类型,并在调用的方法中执行return方法。如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class E4_09Wait : MonoBehaviour {

	IEnumerator Start()
    {
        //等待
        return Test();
    }

    //返回等待时间
    IEnumerator Test()
    {
        Debug.Log("开始等待:"+Time.time);
        yield return new WaitForSeconds(2);
        Debug.Log("结束等待:"+Time.time);
    }
}

注:一定要将WaitForSeconds()方法的返回类型修改为 IEnumerator ,否则无法实现等待。

 

三、随机数

Random.Range()方法:两个参数,第一个为随机数的起始位置,第二个为结束位置。返回值 取左不取右

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class E4_09Random : MonoBehaviour {

	void Start () {
        int a = Random.Range(0,100);
        float b = Random.Range(0.0f,10.0f);

        Debug.Log("获取一个0-100之间的整形随机数:"+ a);
        Debug.Log("获取一个0.0-10.0之间的浮点型随机数:" + b);
	}
}

 

四、数学

Mathf类的一些常用数学方法:

  • Mathf.Abs(int i):返回一个绝对值,整形或者浮点型。
  • Mathf.Clamp(int num, int min, int max):返回一个限值数,num值在min和max之间则返回num值,小于min返回min值,大于max返回max值。
  • Mathf.Lerp(float start, float end, Time.time):插入值,参数与start为开始值,end为结束值,Time.time为消耗的时间。该方法常用于物体的平移。(下面Quaternion.Slerp()方法常用于旋转)
  • Mathf.Sin(4):返回正弦值。
  • Mathf.Cos(4):返回余弦值。
  • Mathf.Tan(4):返回正切值。
  • Mathf.Max(2, 44):返回两个数的最大值
  • Mathf.Min(2, 44):返回两个数的最小值
  • Mathf.PI:圆周率

 

五、四元数

unity中所有用到模型旋转的,其底层都是有四元数实现的,它可以精确计算模型旋转的角度。

示例:

  • Quaternion.Euler()方法:返回一个旋转的四元数,该方法的三个参数为旋转的三维坐标。 执行该方法后,将四元数赋值给立方体旋转对象的旋转变量,即可在一帧内完成旋转。若想在一段时间内完成旋转,就要用Quaternion.Slerp()进行插值旋转。
  • Quaternion.Slerp()方法:第一个参数为旋转起始角度,第二个参函数为结束角度,第三个为旋转共消耗的时间[0, 1]。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class E4_09Math : MonoBehaviour {
    
    bool isRotation = false;    //是否开始差值旋转

    void OnGUI()
    {
        if(GUILayout.Button("旋转固定角度",GUILayout.Height(50)))
        {
            gameObject.transform.rotation = Quaternion.Euler(0.0f,50.0f,0.0f);
        }
        if (GUILayout.Button("插值旋转固定角度", GUILayout.Height(50)))
        {
            isRotation = true;
        }
    }
    void Update()
    {
        if(isRotation)
        {
            gameObject.transform.rotation = 
                Quaternion.Slerp(gameObject.transform.rotation, 
                Quaternion.Euler(0.0f, 50.0f, 0.0f),Time.deltaTime*2.5f);
        }
    }
}

点击“旋转固定角度”将在一帧内完成旋转

点击“插值旋转固定角度”将在设定的时间(如上面代码中:Time.time*0.1f)完成旋转过程。

2016-05-26 11:11:06 woaini454186694 阅读数 2720
  • Unity3D入门到精通-(2)Profiler工具精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    2734 人正在学习 去看看 张刚

Unity3D工具、Mono工具、内部脚本工作原理以及跨平台特性


1、几个概念的理解:

Unity3D主要包括两个部分:Unity Engine和Unity Editor。提供了UnityEngine.dll和UnityEditor.dll两个动态库。
Unity Engine:C/C++编写,由平台相关代码,图形API、物理引擎、灯光、网络层接口等组成,编译为UnityEngine.dll,各平台不同,用户Shader代码也属于这一层的内容;
Unity Editor:IDE工具,大部分是由C#编写,插件也是用C#编写(调用UnityEditor.dll开发),用户脚本可用C#/JS/Boo编写,项目代码最后由Mono编译;
Mono运行环境:Novell公司开发的跨平台·NET运行环境。功能是编译工程以及提供不同平台的CLR运行时。对于Android平台,首先编译输出为dll(即IL),游戏启动时Mono运行时再将用户dll和UnityEngine.dll等编译为JIT格式运行;对于IOS平台,由于不允许运行时生成Native Code,只能一次性将UnityEngine.dll和用户脚本等编译为Full AOT格式存储。

JIT(Just-in-Time compilation,即时编译)

AOT(Ahead-of-Time,提前编译或静态编译)

上面说了,在IOS平台,不能再运行时生成Native code,为了绕过苹果公司的这个机制,可以使用Lua语言来实现热更新。


2、Unity3D程序以及内部脚本工作原理:
由上面介绍可知,Unity程序调用的层次关系是:

脚本(C#/JS/Boo)/UnityEditor/Unity Plugin --> 

UnityEngine(C/C++) --> 

图形API(OpenGL/DirectX/CG/Shader等)/物理引擎(Nvidia的PhysX)/灯光(Autodesk的Beast/Enlighten)/网络层(UNET) --> 

底层代码(如操作系统内核、汇编等) --> 

硬件

3、Unity3D跨平台特性:
这里的上帝是Mono,它为Unity游戏提供了.Net框架。针对不同平台的编译打包,都会把Mono运行时打包进去,当执行用户脚本的时候,就是由它来解析,从而达到跨平台的效果。

2017-02-28 23:02:44 tiandixuanwuliang 阅读数 23360
  • Unity3D入门到精通-(2)Profiler工具精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    2734 人正在学习 去看看 张刚

如今AR技术越来越火,本文将使用Unity3d工具介绍如何一步一步开发一个AR软件,使之能够安装在手机里面,体验一把AR。
1、前期准备:
1.1下载Unity3d工具:链接:https://pan.baidu.com/s/11W8tz591_zJhy-kGN099Wg 密码:481x
   (里面包含Unity破解工具,请大家自行安装) 
1.2下载Android_SDK:http://rj.baidu.com/soft/detail/23485.html?ald(解压即可)
1.3下载EasyAR帮助文档:http://download.csdn.net/detail/tiandixuanwuliang/9767145(参考使用)
2、如何获取EasyAR的密钥来开发AR?
2.1在EasyAR官网(www.easyar.cn)注册账号,注册登录后,点击“创建应用”:


2.2在弹出的窗口中,输入应用名和包名(非常重要):


2.3创建完毕后,会显示key和应用包名,保存好:


3、 注册后,还要下载EasyAR的相关工具,点击上页面中的“立即下载”:

4如何使用Unity开发AR?
4.1创建一个空的Unity工程:
4.1.1点击“new projct”:


4.1.2最好把工程名输入的和在EasyAR官网上的应用名一样,选择“3d”如图:


4.2配置Unity中AR--APP开发环境:
4.2.1空的Unity工程如图:


4.2.2配置Android开发环境,点击“file”--“Build Setting”(Ctrl+Shift+B)如图:



在弹出的页面中,按照如图顺序点击:



4.2.3点击“Player Settings”后,配置右边弹出的窗口:
(请在Company Name中输入你在EasyAR注册的用户名,在Product Name中输入
在EasyAR创建应用的应用名)


4.2.4点击上述图片中的“Other Settings”,在“Bundle Identifier”输入
在EasyAR官网创建应用的包名,其余选项的看图(非常重要)。



4.2.5配置AR开发环境,导入EasyAR环境:
把下载的EasyARSDK解压。在Unity中按图选择:


在弹出的窗口中选择EasyAR.unitypackage文件:例如我的:
“E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\EasyAR.unitypackage”
等待一会后,在弹出的窗口中选择“all”,再选择“Import”,如图:



等一会儿后,点击“1步”再把“2步”拖入上面场景中,再点击“3步”,输入在
EasyAR官网创建应用的key(4步):



到此使用Unity开发基于AR的APP的工作就都结束了,可以导入APP来玩了(导出方法见后文)。不过我试了下此APP
没什么效果,下面我们将导入EasyARSDK自带的一个小例子Hello_AR。过程中如果弹框提示“Android SDK”路径,
请大家自己选择路径。
5导入Hello_AR:
5.1点击"file"---"open Projct"---在弹出的界面中点击“oper others"---找到"
E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\Sample_HelloAR\Assets\HelloAR"即HelloAR路径
---弹出的窗口问“是否保存”,点击是,填写文件名。---等一会后,按照上面同样的方法拖入HelloAR,由于博文
篇幅问题,不知道,请在下方留言。
6导出一个APP,即apk文件:
点击“file”--“Build Setting”,再弹出的页面中点击“Build”,如图:
(不知道的,请再看4.2.2节)
输入apk文件名,是在EasyAR官网创建应用的应用名(非常重要)。



7快把这个应用安装在您的手机上吧(不能用手机模拟器),拿出你的“身份证”开始玩吧。效果图:


8博文写的很辛苦,如果您觉得对您有点作用请“点赞”,有问题
欢迎大家留言,文章有些地方写的可能有点问题,万请见谅。
HelloAR工程链接(直接把该文件里的HelloAR.unity使用Unity打开,即可,就可以导出一个APP,安装到手机):
   http://download.csdn.net/detail/tiandixuanwuliang/9767297
导出后的apk安装包链接:
    http://download.csdn.net/detail/tiandixuanwuliang/9767301(可以直接安装在手机里,开始进入AR世界了)
注意:
1、如果Unity打包过程出现类似下面这样的错误提示:
    Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. 
See the Console for details.
    表示你的你复制过来的libs文件夹里的东西和Unity的有冲突,通常是含有和Unity的classes.jar相同内容的
jar文件。就删掉classes.jar文件。

 

 欢迎大家留言。谢谢大家的阅读。

 

本文链接:http://blog.csdn.net/tiandixuanwuliang/article/details/58707338

2018-08-01 09:24:33 One_Piece_Fu 阅读数 967
  • Unity3D入门到精通-(2)Profiler工具精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    2734 人正在学习 去看看 张刚

本文转自  天地炫舞的博客

如今AR技术越来越火,本文将使用Unity3d工具介绍如何一步一步开发一个AR软件,使之能够安装在手机里面,体验一把AR。
1、前期准备:
1.1下载Unity3d工具:链接:https://pan.baidu.com/s/1ggOeirh 密码:hvky
   (里面包含Unity破解工具,请大家自行安装) 
1.2下载Android_SDK:http://rj.baidu.com/soft/detail/23485.html?ald(解压即可)
1.3下载EasyAR帮助文档:http://download.csdn.net/detail/tiandixuanwuliang/9767145(参考使用)
2、如何获取EasyAR的密钥来开发AR?
2.1在EasyAR官网(www.easyar.cn)注册账号,注册登录后,点击“创建应用”:


2.2在弹出的窗口中,输入应用名和包名(非常重要):


2.3创建完毕后,会显示key和应用包名,保存好:


3、 注册后,还要下载EasyAR的相关工具,点击上页面中的“立即下载”:

4如何使用Unity开发AR?
4.1创建一个空的Unity工程:
4.1.1点击“new projct”:


4.1.2最好把工程名输入的和在EasyAR官网上的应用名一样,选择“3d”如图:


4.2配置Unity中AR--APP开发环境:
4.2.1空的Unity工程如图:


4.2.2配置Android开发环境,点击“file”--“Build Setting”(Ctrl+Shift+B)如图:



在弹出的页面中,按照如图顺序点击:



4.2.3点击“Player Settings”后,配置右边弹出的窗口:
(请在Company Name中输入你在EasyAR注册的用户名,在Product Name中输入
在EasyAR创建应用的应用名)


4.2.4点击上述图片中的“Other Settings”,在“Bundle Identifier”输入
在EasyAR官网创建应用的包名,其余选项的看图(非常重要)。



4.2.5配置AR开发环境,导入EasyAR环境:
把下载的EasyARSDK解压。在Unity中按图选择:


在弹出的窗口中选择EasyAR.unitypackage文件:例如我的:
“E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\EasyAR.unitypackage”
等待一会后,在弹出的窗口中选择“all”,再选择“Import”,如图:



等一会儿后,点击“1步”再把“2步”拖入上面场景中,再点击“3步”,输入在
EasyAR官网创建应用的key(4步):



到此使用Unity开发基于AR的APP的工作就都结束了,可以导入APP来玩了(导出方法见后文)。不过我试了下此APP
没什么效果,下面我们将导入EasyARSDK自带的一个小例子Hello_AR。过程中如果弹框提示“Android SDK”路径,
请大家自己选择路径。
5导入Hello_AR:
5.1点击"file"---"open Projct"---在弹出的界面中点击“oper others"---找到"
E:\software\Unity 5.0.0b1\EasyARsdk_v1.3.1\EasyARSDK\unity\Sample_HelloAR\Assets\HelloAR"即HelloAR路径
---弹出的窗口问“是否保存”,点击是,填写文件名。---等一会后,按照上面同样的方法拖入HelloAR,由于博文
篇幅问题,不知道,请在下方留言。
6导出一个APP,即apk文件:
点击“file”--“Build Setting”,再弹出的页面中点击“Build”,如图:
(不知道的,请再看4.2.2节)
输入apk文件名,是在EasyAR官网创建应用的应用名(非常重要)。



7快把这个应用安装在您的手机上吧(不能用手机模拟器),拿出你的“身份证”开始玩吧。效果图:


8博文写的很辛苦,如果您觉得对您有点作用请“点赞”,有问题
欢迎大家留言,文章有些地方写的可能有点问题,万请见谅。
HelloAR工程链接(直接把该文件里的HelloAR.unity使用Unity打开,即可,就可以导出一个APP,安装到手机):
   http://download.csdn.net/detail/tiandixuanwuliang/9767297
导出后的apk安装包链接:
    http://download.csdn.net/detail/tiandixuanwuliang/9767301(可以直接安装在手机里,开始进入AR世界了)
注意:
1、如果Unity打包过程出现类似下面这样的错误提示:
    Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. 
See the Console for details.
    表示你的你复制过来的libs文件夹里的东西和Unity的有冲突,通常是含有和Unity的classes.jar相同内容的
jar文件。就删掉classes.jar文件。

 欢迎大家留言。谢谢大家的阅读。

 

2015-03-04 19:07:09 book_longssl 阅读数 4211
  • Unity3D入门到精通-(2)Profiler工具精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    2734 人正在学习 去看看 张刚



  说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是SVN管理Unity3D项目的确有一些不尽人意的地方,比如:两个人修改了同一个场景,SVN更新时就不能合并
  

  ,还有在Unity Editor 中SVN不可视化,不友好!
  我们团队初期也是使用SVN,在本地文件夹中进行提交和更新。记录一下我们一路走来的历程
  下面记录一下我们团队使用版本管理工具的过程:
  1.SVN客户端管理工具,使用原始的本地文件夹内操作
  

  

  

  2.UVsersionControl
  

  ,集成在Unity3D界面中,方便直观地使用SVN的功能,update,commit,delete
  此插件可以Asset Store上免费获得哦!
 
  而且还是开源免费的哦,强烈顶一下作者!
  Note:需要安装SVN的命令行版本才能使用此插件,注意:此命令行版本要和你已安装的Tortoise SVN客户端版本一致!作者推荐1.7版本的SVN.
  下载地址:Windows Subversion 命令行 客户端(SVN) ,
  

  

  

  使用此插件也能比较方便地管理项目
  

  3.
  

  我觉得最好的版本管理工具 要数Unity官方的Asset Server了。
  参考资料:CSDN博客:asset server u3d项目管理
  Unity指南 Asset Server (Team License Only)Setting up the Asset Server
  疑问:如何控制文件夹访问权限。答:可以通过历史记录及自带的回收站功能来管理项目
  Note:当两个文件发生冲突时,当你安装了TortoiseSVN之后就可以使用compare、合并工具比较两个文件的异同。
  两个人修改同一场景,完全无压力
  

  终于摆脱了不能同时编辑同一个场景的困扰!
  MAC下代码合并工具:
  SourceGear Diff/Merge.
  FileMerge: part of Apple'sXCode development tools.
  TkDiff.
  Perforce Merge (p4merge): part of Perforce's visual client suite (P4V).
  常见错误:
  1、有时候因为代码报错,另一人的GameObject设置不会相应载入,提示你需要先解决代码错误,大部分情况下都是编码问题,就是代码中有中文注释。需要把文件另存为UTF-8
  2、需要先Update才能Commit
  3、当有冲突时需要合并代码文件 Merge
  

  

  






  

Unity3d 工具方法

阅读数 151

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