unity的重中之重:组件

检查器(Hierarchy)面板中的所有东西都是组件。日后多数工作都是和组件打交道,包括调参、自定义脚本组件。

文章目录

  • 12 游戏的灵魂,脚本组件
  • 13 玩转脚本组件
  • 14 尽职的一生,了解组件的生命周期
  • 15 不能插队!脚本的执行顺序问题
  • 16 别搞错了,给游戏物体做个标记

12 游戏的灵魂,脚本组件

所有物体都能看成是一个空物体+组件
每一个物体都是一个空物体,之所以会表现出不同的形式是因为它的不同的组件
添加自定义组件方法:创建->拖拽
image.png


13 玩转脚本组件

空物体的成长历程
image.png
组件右侧的白色框框的选项是一些对组件的操作,包括移动、复制和粘贴组件、粘贴组件属性值等

14 尽职的一生,了解组件的生命周期

image.png

  1. awake
  2. onenable组件激活(启动)(可多次)
  3. start 第一次 onenable调用之后
  4. update每一帧
  5. lastupdata每一帧之后
  6. fix固定时间可在设置中修改
  7. ondisahle 物体状态变成非激活时候执行其中代码
  8. ondestroy 移除组件时候调用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class test : MonoBehaviour
{
void Awake() 
{
Debug.Log("Awake");
}
void OnEnable() 
{
Debug.Log("OnEnable");
}
// Start is called before the first frame update
void Start()
{
Debug.Log("Start");
}// Update is called once per frame
void Update()
{
Debug.Log("Update");
}void LateUpdate() 
{
Debug.Log("LateUpdate");
}//void FixedUpdate() 
//{
//    Debug.Log("FixedUpdate")
//}void OnDisable() 
{
Debug.Log("OnDisable");
}void OnDestroy() 
{
Debug.Log("OnDestroy");
}
}

image.png

15 不能插队!脚本的执行顺序问题

多个脚本时候的执行顺序:
先执行所有脚本的Awake方法,在执行所有脚本的Start方法。
控制脚本执行顺序的两个方法

  1. 利用生命周期函数
    1. 脚本1的代码写在Awake(要求脚本1中的先执行)
    2. 脚本2的代码写在OnEnable
  2. 使用编辑器的项目设置(设置执行顺序)
    1. 第一种方式打开
      1. image.png
    2. 第二种打开方式
      1. image.png

注意要把框架最底层的东西放在上边,这样我们的才有效。

初始化的东西放在Awake里边。不要放在OnEnable,否则容易多次运行,丢失信息。

16 别搞错了,给游戏物体做个标记

image.png


【标签】的作用
作用1:在脚本中通过标签能找到物体(游戏对象)
作用2:判断物体是不是我想要的物体
注意标签是可以重复的:多个物体可以对应同一个标签。比如多个妖怪都是妖怪


【图层】
碰撞检测、相机拍摄 会涉及到
图层是控制一批游戏物体的,比如游戏中的角色。图层的个数只有32个,最好从系统给定之下添加图层。
相机的剔除遮罩就是利用了图层,决定拍哪、不拍哪些图层。
真实场景中可利用图层来制作小地图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470700.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023.2.6

#include<stdio.h> #include<string.h> //冒泡排序 void bubb(int arr[],int len) {for(int i1;i<len;i){for(int j0;j<len-i1;j){if(arr[j1]<arr[j]){int tarr[j];arr[j]arr[j1];arr[j1]t;}}} } //select排序 void select(int arr[],int len) {int min0;…

MySQL索引语法

目录 1、创建索引&#xff1a; 2、查看索引 3、删除索引 4、案例分析&#xff1a; 4.1、name是姓名字段&#xff0c;该字段的值可能会重复&#xff0c;为该字段创建索引 4.2、phone是手机号&#xff0c;手机号字段的值非空且唯一&#xff0c;为该字段创建索引 4.3、为pro…

蓝桥杯真题:纸张尺寸

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...String s scan.nextLine();char[] c s.toCharArray();char c1 c[1];in…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学

说明&#xff1a;这篇文章是适用于已经学过SpringBoot3和Vue3理论知识&#xff0c;但不会具体如何实操的过程的朋友&#xff0c;那么我将手把手从教大家从后端与前端交互的过程教学。 目录 一、创建一个SpringBoot3项目的和Vue3项目并进行配置 1.1后端配置: 1.1.1applicatio…

(15)Hive调优——数据倾斜的解决指南

目录 前言 一、什么是数据倾斜 二、发生数据倾斜的表现 2.1 MapReduce任务 2.2 Spark任务 三、如何定位发生数据倾斜的代码 四、发生数据倾斜的原因 3.1 key分布不均匀 3.1.1 某些key存在大量相同值 3.1.2 存在大量异常值或空值 3.2 业务数据本身的特性 3.3 SQL语句…

Django学习笔记教程全解析:初步学习Django模型,初识API,以及Django的后台管理系统(Django全解析,保姆级教程)

把时间用在思考上是最能节省时间的事情。——[美]卡曾斯 导言 写在前面 本文部分内容引用的是Django官方文档&#xff0c;对官方文档进行了解读和理解&#xff0c;对官方文档的部分注释内容进行了翻译&#xff0c;以方便大家的阅读和理解。 概述 在上一篇文章里&#xff0…

Repo命令使用实例(三十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Git快速掌握,通俗易懂

Git分布式版本控制工具 介绍 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。Git是由Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git可以帮助开发者们管理代码的版本&#xff0c;避免代码冲突&#…

无人机地面站技术,无人机地面站理论基础详解

地面站作为整个无人机系统的作战指挥中心&#xff0c;其控制内容包括:飞行器的飞行过程&#xff0c;飞行航迹&#xff0c; 有效载荷的任务功能&#xff0c;通讯链路的正常工作&#xff0c;以及 飞行器的发射和回收。 无人机地面站总述 地面站作为整个无人机系统的作战指挥中心…

分层图最短路

分层最短路用更加具体或者形象一点的说法就是有限制的最短路径问题。 通常是拆点解决问题,原图中的点加上一个当前点的状态&#xff0c;成为一个新的点 P4568 [JLOI2011] 飞行路线 P4568 [JLOI2011] 飞行路线 #include <bits/stdc.h> #define int long long #define …

2024.2.14

1.请编程实现二维数组的杨慧三角 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int n,i,j;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(i0;i<n;i){for(j0;j<i;j){if(j0 || ij…

C++类和对象-多态->多态的基本语法、多态的原理剖析、纯虚函数和抽象类、虚析构和纯虚析构

#include<iostream> using namespace std; //多态 //动物类 class Animal { public: //Speak函数就是虚函数 //函数前面加上virtual关键字&#xff0c;变成虚函数&#xff0c;那么编译器在编译的时候就不能确定函数调用了。 virtual void speak() { …