unity2d3d结合_unity3d脚本编程与游戏开发

unity2d3d结合_unity3d脚本编程与游戏开发Unity3D数字孪生笔记(八)一、脚本介绍1、脚本1>介绍2>语法结构3>编译过程4>修改脚本模板2、开发工具1>MonoDevelop2>VisualStudio3>Console3、脚本生命周期4、调试1>使用Unity编辑器2>使用VS3>使用MonoDevelop二、常用API1、Component2、Transform3、GameObject4、Time一、脚本介绍1、脚本1>介绍脚本是附加在游戏物体上用于定义游戏对

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、脚本介绍

请添加图片描述

1、脚本

1>介绍

  • 脚本是附加在游戏物体上用于定义游戏对象行为的指令代码
  • Unity支持三种高级编辑语言:
    C#、JavaScript、BooScript(现在不支持)

2>语法结构

  • 文件名与类名必须一致
  • 写好的脚本必须附加到物体上才能执行
  • 附加到游戏物体的脚本类必须从MonoBehaviour类继承
using 命名空间;//命名空间避免重名
public class 类名:MonoBehaviour
{ 
   
	void 方法名()
	{ 
   
		Debug.Log("调试显示信息");
		print("本质就是Debug.Log方法");
	}
}

3>编译过程

  • 编译运行过程:
    源代码 –>(CLS) –>中间语言 –>(Mono Runtime) –>机器码

4>修改脚本模板

1、图标单击鼠标右键 –>属性
2、打开文件位置
在这里插入图片描述
3、依次选择Data –> Resources –> ScriptTemplates
在这里插入图片描述
4、选择81开头的txt,并以VS打开或记事本打开,改写成如下格式,保存即可
在这里插入图片描述

2、开发工具

1>MonoDevelop

  • Unity 自带脚本编译器,创建Mono应用程序,适用于Linux、Mac OS X和Windows的集成开发环境,支持C#、BOO和JavaScript等高级编程语言

2>Visual Studio

  • 微软公司的开发工具包,包括了整个软件生命周期中需要的大部分工具,如团队开发工具、继承开发环境等
  • 在Unity中通过菜单设置修改默认的脚本编辑器:
    Edit ——Preferences——External Tools——External Script Editor

3>Console

3、脚本生命周期

在这里插入图片描述

1>简介

  • Unity脚本从唤醒到销毁的过程
  • 消息:当满足某种条件Unity引擎自动调用的函数
  • 也称为必然事件

2>初始阶段

  • Awake 唤醒:
    物体载入时立即调用1次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this.enable = true
  • OnEnable 当可用:
    每当脚本对象启用时调用
  • Start 开始:
    物体载入且脚本对象启用时被调用1次,常用于数据或游戏逻辑初始化,执行时机晚于Awake
    //**********************初始阶段***************************
    //执行时机: 创建游戏对象 --> 立即执行1次(早于Start)
    //作用:初始化
    private void Awake()
    { 
   
        Debug.Log("Awake--" + Time.time + "--" + this.name);
    }
    //执行时机: 创建游戏对象 --> 脚本启用 -->才执行(1次)
    //作用:初始化
    private void Start()
    { 
   
        Debug.Log("Start--" + Time.time + "--" + this.name);
    }

3>物理阶段

  • FixedUpdate 固定更新:
    1、脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,例如移动等
    2、设置更新频率:“Edit” –>“Project Setting” –> “Time” –>”Fixed Timestep”值,默认0.02s

  • OnCollisionXXX 碰撞:
    当满足碰撞条件时调用

  • OnTriggerXXX 触发:
    当满足触发条件时调用

    //**********************物理阶段***************************
    //执行时机:每隔固定(默认0.02s)时间执行1次 (时间可以修改)
    //适用性:适合对物体做物理操作(移动、旋转……),不会受到渲染影响
    private void FixedUpdate()
    { 
   //渲染时间不固定(每帧渲染量不同、机器性能不同)
        Debug.Log(Time.time);
    }

4>输入事件

  • OnMouseEnter 鼠标移入:
    鼠标移入到当前Collider 时调用
  • OnMouseOver 鼠标经过:
    鼠标经过当前Collider 时调用
  • OnMouseExit 鼠标离开:
    鼠标离开当前Collider 时调用
  • OnMouseDown 鼠标按下:
    鼠标按下当前Collider 时调用
  • OnMouseUp 鼠标抬起:
    鼠标在当前Collider 上抬起时调用

5>游戏逻辑

  • Update 更新:
    脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关
  • LateUpdate 延迟更新:
    在Update函数被调用后执行,适用于跟随逻辑

6>场景渲染

  • OnBecameVisible 当可见:
    当Mesh Renderer 在任何相机上可见时调用
  • OnBecameInvisible 当不可见:
    当Mesh Renderer 在任何相机上都不可见时被调用

7>结束阶段

  • OnDisable 当不可用:
    对象变为不可用或附属游戏对象非激活状态时此函数被调用
  • OnDestory 当销毁:
    当脚本销毁或附属的游戏对象被销毁时被调用
  • OnApplicationQuit 当程序结束:
    应用程序退出时被调用

4、调试

1>使用Unity编辑器

  • 将程序投入到实际运行中,通过开发工具进行测试,修正逻辑错误的过程。
  • 1.控制台调试
    Debug.Log(变量);
    print(变量);
  • 2.定义共有变量,程序运行后在检测面板查看数据

适用性: 简单逻辑的调试

2>使用VS

  • 准备工作:
    (1)安装 vstu20xx 工具
    (2)在Unity项目面板中导入:Visual Studio 20xx Tools
  • 调试步骤:
    (1)在可能出错的行添加断点
    (2)菜单栏——调试——附加Unity调试程序
    (3)在Unity中Play场景
  • Update中进行单帧调试:
    (1)菜单栏——调试——附加Unity调试程序
    (2)Unity中运行游戏场景
    (3)暂停场景
    (4)加断点
    (5)单帧运行
    (6)结束调试
  • 调试过程中,输入代码的方式:
    (1)右键—>快速监视
    (2)查看”即时窗口”

适用性: 复杂逻辑的调试

3>使用MonoDevelop

  • 在可能出错的行添加断点
  • 启动调试:点击MD菜单栏”Run”—>Attach to Processs按钮
  • 在Unity中Play场景
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191979.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 非阻塞connect,错误码:EINPROGRESS

    http://blog.csdn.net/benbendy1984/article/details/5773137当我们以非阻塞的方式来进行连接的时候,返回的结果如果是-1,这并不代表这次连接发生了错误,如果它的返回结果是EINPROGRESS,那么就代表连接还在进行中。

  • maven 本地仓库的配置以及如何修改默认.m2仓库位置

    maven 本地仓库的配置以及如何修改默认.m2仓库位置本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新。(感觉和网络里面的路由器有点像,你发请求,先在…

  • 数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]

    数据结构C语言严蔚敏版(第二版)超详细笔记附带课后习题[通俗易懂]根据此书所做随笔笔记。一、绪论1.1、数据机构的研究内容用计算机解决实际问题时,步骤:首先分析实际问题,从中抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编程,调试,测试。寻求数据模型的实质是分析问题,从中提取出计算机处理的对象,并找出这些对象之间的关系,然后用数学的语言加以描述。关键:分析问题中所用到的数据是如何组织的,研究数据之间存在什么样的关系。由于数据必须在计算机中处理,因此不能局限于数据本身的数学问题的研究,还必须考虑数据的物理结构,即数据在计算机中的存储结构。1.

  • JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayList

    JAVA如何遍历arraylist数组,Java 程序使用Lambda表达式遍历ArrayListJava程序使用Lambda表达式遍历ArrayList在此示例中,我们将学习在Java中使用lambda表达式遍历数组列表的每个元素。要理解此示例,您应该了解以下Java编程主题:示例:将ArrayList作为函数参数传递示例importjava.util.ArrayList;classMain{publicstaticvoidmain(String[]args){//创建Ar…

  • 线程池参数设计技巧

    线程池参数设计技巧ThreadPoolExecutor线程池参数设置技巧一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数核心线程会一直存活,及时没有任务需要执行当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列…

  • 腾讯云免费ssl证书有几个_腾讯云ssl

    腾讯云免费ssl证书有几个_腾讯云ssl腾讯云免费SSL证书腾讯云免费证书是由亚洲诚信(TrustAsia)提供的,由Digicert根证书签发。域名类型单域名,证书有效期为1年。限制同一主域最多只能申请20张。一级域名及其子域名均属于同一主域。如果超过此限制可以到其他平台申请免费的证书。如果需要免费的泛域名证书或多域名证书,可以了解一下来此加密。来此加密:提供免费的泛域名证书,多域名证书,可自动验证,自动续签。SDSDS腾讯云免费SSL证书限制…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号