unity生命周期

[Unity基础] 单例类Singleton

亡梦爱人 提交于 2020-02-19 04:29:27
using System ; using System . Collections ; using System . Collections . Generic ; using UnityEngine ; namespace Common { //namespace 域名.项目名称.模块 /// <summary> /// 脚本单例工具类 /// 特点: /// 1.唯一 /// 2.常用 /// 功能: /// 1.保持一个游戏对象的单一,整个进程只有这一个对象 /// 2.对单一游戏对象的控制和调用 /// 解释: /// 泛型类<T>,为了子类可以传递类型 /// 泛型约束:类型参数必须是指定的基类或派生自指定的基类。 /// 子类需要继承此单例类 /// 如何使用: /// 1.继承时,必须传递子类类型 /// 2.在任意脚本生命周期中,通过子类类型访问Instance属性, XXXX.Instance.XXX /// </summary> public class MonoSingleton < T > : MonoBehaviour where T : MonoSingleton < T > { // T 代表子类型 通过 where T : MonoSingleton<T> 来体现 //按需加载 private static T instance ; /

Unity入门一,什么是GameObject,MonoBehaviour

吃可爱长大的小学妹 提交于 2020-02-11 01:11:34
Unity入门一,什么是GameObject,MonoBehaviour GameObject和Component Unity是一个 Component-Based 的引擎, 所有物体 都是GameObject GameObject是游戏场景中 真实存在 的,而且 有位置 的一个物件 Component附属于GameObject,控制GameObject的各种属性 GameObject是由Component组合成的,Component的生命周期和GameObject息息相关。调用此GameObject的Destroy方法,它的子对象和对应的所有Component都会被销毁,但也可以一次只销毁一个Component 常见的Component: Component 作用 RigidBody 刚体 使物体能在物理控制下运动 Collider 碰撞器 和RigidBody刚体一起使碰撞发生,没有Collider,两个碰撞的刚体会相互穿透 Renderer 渲染器 使物体显示在屏幕上 AudioSource 音频源 使物体在scence场景播放音频 Animation 动画 Animator 动画控制器 同时所有脚本都是组件,因此都能附到游戏对象上 常用的组件可以通过简单的成员变量获取 附在游戏对象上的组件或脚本可以通过GetComponent获取 using UnityEngine;

Unity3D_04_GameObject,Component,Time,Input,Physics

て烟熏妆下的殇ゞ 提交于 2020-02-10 23:58:35
Unity3D是一个Component-Based的游戏引擎,并且为GamePlay Programmer提供了很多游戏性层上的支持。 1.可以在图形界面上设计动画状态转换的Animator。 2.可以直接在场景编辑器中方便进行调整的Collider。 3.可以动态调整动画曲线的Animation。 总的来说,Unity是一个架构比Cocos2d-x精巧许多的游戏引擎。 但是很遗憾的是,Unity本身并不开源,还好,Unity在不开源的情况下却做了比较详尽的文档支持。同时,Unity的社区也是很友好的,stackoverflow也有许多值得一看的问题。 顺便推荐几个学习Unity的网站: Unity圣典 Unity的官方文档 Unity的知乎话题 对于Unity内部的类有点儿乱,所以通过下面这份设计类图来更好地理解: GameObject和Component 由于Unity是一个Component-Based的游戏引擎,所以游戏中所有的物体都是一个GameObject,为了给这个GameObject附加上各种各样的属性,所以我们引入了Component这个概念。 GameObject是由Component组合成的,Component的生命周期和GameObject息息相关。一旦GameObject的Destroy方法,它的子对象和对应的所有Component都会被销毁,同时

Unity生命周期

一个人想着一个人 提交于 2020-02-07 04:39:32
Awake ->OnEable-> Start -> -> FixedUpdate-> Update -> LateUpdate ->OnBecameVisible ->OnBecameInvisible -> OnDisable ->OnDestroy 1.Awake:用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次. Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.FindWithTag()这样的函数搜索它们。每个游 戏物体上的Awake以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息Awake总是在Start之前被调用。 它不能用来执行协同程序。 2.Start:仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。它和Awake 的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。 在所有脚本实例中,Start函数总是在Awake函数之后调用。 3.FixedUpdate:固定帧更新,在Unity导航菜单栏中,点击“Edit”–>“Project Setting”–>“Time”菜单项后,右侧的Inspector视图将弹出时间管理器,

unity学习笔记(脚本生命周期)

我的未来我决定 提交于 2020-02-07 04:04:05
脚本生命周期 脚本代码使用技巧 using System . Collections ; using System . Collections . Generic ; using UnityEngine ; /// <summary> /// /// </summary> public class LifeCycle : MonoBehaviour { public int a = 100 ; //序列化字段 作用:在编辑器中显示私有变量 [ SerializeField ] private int b ; //作用:在编译器中隐藏字段 [ HideInInspector ] public int c ; //设置数据范围 [ Range ( 0 , 100 ) ] public int d ; public LifeCycle ( ) { //Debug.Log("Hello"); } //初始阶段 //执行时机:创建游戏对象--》立即执行(早于Start) //作用:初始化 private void Awake ( ) { //Debug.Log("Awake--" + Time.time); } //执行时机:创建游戏对象--》脚本启用--》才执行 //作用:初始化 private void Start ( ) { //Debug.Log("Start--" + Time

unity游戏之太空射击

依然范特西╮ 提交于 2020-01-06 04:50:52
  由于在开发中遇到的问题需要较大的文字量描述,特此介绍开发的整个流程,并用 红色标记 所遇到的问题以及解决方法。 开发流程如下: 1. 下载游戏所需模型与素材并导入 Unity。 2. 添加玩家飞机   在素材中添加玩家的飞机到层级视图 (Hierarchy)中,并命名为 player。层级视图 (Hierarchy) 包含当前场景中的每个游戏对象 (GameObject)。有些是三维模型等资源文件的直接实例,其余是 预设 (Prefabs) 实例,自定义对象构成游戏的绝大部分。预设 (Prefab) 是一种资源 ,存储在工程视图 (Project View) 中可重复使用的游戏对象 (GameObject)可在层级视图 (Hierarchy) 中选择对象并将一个对象拖到另一个对象内,以应用父子化 (Parenting)(见下图)。在场景中添加和删除对象后,还将在层级视图 (Hierarchy) 中显示或消失。   查看游戏对象的时候,可以使用 QWER几个快捷键进行观察视角的旋转、移动和缩放。   鉴于飞机大战游戏中会涉及到碰撞等事件的发生,而飞机模型由太多的三角形组成,做碰撞检测时会导致效率不高的问题产生。因此,我们在 player中加一个飞机碰撞模型,并添加到飞机模型的网格碰撞器 (mesh collider)中。   同时,由于飞机本身存在重力

基于Mac的高端游戏开发工具 Unity Pro 2019 mac破解版

心已入冬 提交于 2019-12-05 22:24:29
unity pro 2019 mac破解版是基于Mac的高端游戏开发工具,具有时尚的专业应用程序GUI,无摩擦工作流程和顶级技术功能,如可扩展图形,强大的粒子效果,高度优化的脚本,Ageia physX引擎,皮肤角色动画和布娃娃,以及为Mac(包含仪表板小部件和网络插件)制作独立游戏。新版本提供了模块化组件系统、着色器可视化编程工具、可视乎开发环境、渲染架构等额外的功能,带来了更多改进,功能更加完善,你可以使用Unity2019 mac版创建单人或多人游戏或其他实时2D、3D、VR、AR等交互式体验,全面满足下一代游戏开发人员的需求。 游戏开发工具 https://www.macdown.com/mac/4868.html Unity Pro 2019功能特色 一、强大的可扩展编辑器 与您制作流程匹配的可扩展的一体化编辑器 Unity Editor具有多种工具,可在您的开发周期中进行快速编辑和迭代,其中的Play模式可让您实时快速预览作品。 1、一体化编辑器: 支持Windows和Mac系统,涵盖了一系列用于设计沉浸式体验和游戏世界美术家易于使用的工具,以及功能强大的开发者工具套件,可用于实现游戏逻辑和高性能游戏效果。 2、2D & 3D: Unity同时支持2D和3D开发,具有可满足您各种游戏类型特定需求的功能。 3、 AI 领航工具:

第04组 Alpha冲刺(6/6)

橙三吉。 提交于 2019-12-05 07:42:11
队名:new game 组长博客: 戳 作业博客: 戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 协调了一下组内的工作 复习了一下SuffixAutomata 接下来的计划 实现更多的功能 周末shanghai冲冲冲 还剩下哪些任务 让游戏人物动起来 能正确完成事件判断 周末shanghai冲冲冲 遇到了哪些困难 如何触发事件,事件的先后关系逻辑如何处理 和上次一样?还没解决啊 有哪些收获和疑问 进一步了解Unity事件管理 钟博 过去两天完成了哪些任务 研究界面交互 制作完成所有游戏界面的图片展示 制作完成所有图片交互 对UI进行精修 Github签入 接下来的计划 等待星期六的成品展示 还剩下哪些任务 没了 燃尽图 遇到了哪些困难 有些想实现的功能网上视频没有,只能自己琢磨 对UI和后端的交接了解不多 交互方面对c#的不了解导致有些困难 收获和疑问 收获:经过多方面尝试,图形界面全部完成 疑惑:和后端的功能交接了解不是特别清楚,对交互的实现要琢磨一下 刘俊杰 过去两天完成了哪些任务 完善部分脚本 接下来的计划 脚本bug排查与优化 场景挂载脚本并测试 还剩下哪些任务 优化脚本并与场景结合测试 遇到了哪些困难 Unity Scripting API的学习 场景构建方式 有哪些收获和疑问 对脚本生命周期更加理解 高鹏 过去两天完成了那些任务 学习unity

第04组 Alpha冲刺(6/6)

偶尔善良 提交于 2019-12-05 07:42:01
队名:new game 组长博客: 戳 作业博客: 戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 协调了一下组内的工作 复习了一下SuffixAutomata 接下来的计划 实现更多的功能 周末shanghai冲冲冲 还剩下哪些任务 让游戏人物动起来 能正确完成事件判断 周末shanghai冲冲冲 遇到了哪些困难 如何触发事件,事件的先后关系逻辑如何处理 和上次一样?还没解决啊 有哪些收获和疑问 进一步了解Unity事件管理 钟博 过去两天完成了哪些任务 研究界面交互 制作完成所有游戏界面的图片展示 制作完成所有图片交互 对UI进行精修 Github签入 接下来的计划 等待星期六的成品展示 还剩下哪些任务 没了 燃尽图 遇到了哪些困难 有些想实现的功能网上视频没有,只能自己琢磨 对UI和后端的交接了解不多 交互方面对c#的不了解导致有些困难 收获和疑问 收获:经过多方面尝试,图形界面全部完成 疑惑:和后端的功能交接了解不是特别清楚,对交互的实现要琢磨一下 刘俊杰 过去两天完成了哪些任务 完善部分脚本 接下来的计划 脚本bug排查与优化 场景挂载脚本并测试 还剩下哪些任务 优化脚本并与场景结合测试 遇到了哪些困难 Unity Scripting API的学习 场景构建方式 有哪些收获和疑问 对脚本生命周期更加理解 高鹏 过去两天完成了那些任务 学习unity

Entitas--ECS框架插件

和自甴很熟 提交于 2019-12-02 13:22:00
ECS Entity、Component、System Entity Component System 模块解耦 从描述的状态上,不同的观察者会看见不同的行为,拆分不同System出来分别实现。 守望先锋 https://gameinstitute.qq.com/community/detail/114516 内存连续 通过合理组织数据利用 CPU 的缓存机制来加快内存访问数据。 举个例子,当在 Unity 中实时更新若干个 Monster 和 Player 的坐标时,往往是在 Update 中实现 transform.position = new Vector(1,2,3),即需要的数据是 Position,但是却把整个 Transform 数据加载进内存,更高几率造成 Cache Miss;此外,对应 Monster 和 Player Update 生命周期更是不可控,导致加载的数据不久后就失效,一定概率造成 Cache Miss。 上面例子中对数据的处理方式对 Cache 不友好,也对 CPU 访问内存的时间局部性不友好。 Entitas Entitas 组成 (1)Component Unity Component 包括数据和行为。 ECS Component 单纯包括数据。 (2) System Entitas 中的 System 等价于方法。 System