unity的学习,准备搞一款mmo小游戏,服务器和客户端从零学

news2024/11/16 5:38:21

如代码所示,简单了解一下。

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

public class test : MonoBehaviour
{   
    void Awake()
    {
        Debug.Log("awake hello world!");
    }
    // 当脚本可用时,也就是打勾的时候可以使用
    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");
    }
    private void LateUpdate()
    {
        Debug.Log("LateUpdate");
    }

    // 这个是定时进行刷新
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate");
    }

    private void OnDisable()
    {
        
    }

    // 销毁,移除脚本就认为是销毁了组件,或者启动关闭了
    private void OnDestroy()
    {
        Debug.Log("OnDestroy");
    }
}

编辑脚本的执行顺序

我个人感觉不要一个放在Awake函数中,一个放在Start中。因为这只适合两个脚本使用,如果多个脚本还是没有办法解决脚本执行的顺序。在这里设置脚本的执行顺序,添加进去的值越小在队列中越靠前越先执行

在这里插入图片描述

物体标记

给标签换个颜色就能看见文本了。

在这里插入图片描述

图层

可以根据不同图层来做碰撞检测,目前还没有做,简单的了解一下

预设体

修改预设体的值,大家都变了,这样省的一个变了,其他的还要手调,但如果只需要这某一个物体变了,就不要改变预设体的值,而是单独操作这个对象。要改变预设体就直接改右边,如果改单独的一个对象,就改左边的值。试了下材质是一改都要改的,只动一个是不可以的。
在这里插入图片描述

找不到预设体怎么办?

找不到对应的预设体就点一下这个选择
在这里插入图片描述

修改一个预设体物体不操作预设体本体怎么做

点一下打开,这样操作就会直接影响预设体的本体从而影响所有采用预设体的物体了。
在这里插入图片描述

预设体变体

相当于多个基类的感觉,图标变的有点灰色
在这里插入图片描述

欧拉与四元数转换

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

public class RotateTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        // 欧拉角,四元数  
        // unity 用的是四元数
        Vector3 v = new Vector3(0, 30, 0);
        Quaternion q = Quaternion.identity; // 四元数

        // 通过欧拉角创建四元数
        q = Quaternion.Euler(v);

        // 看向一个物体,我猜打怪的时候,玩家视野自动移入
        q = Quaternion.LookRotation(v);

        // 四元数转为欧拉
        var v2 = q.eulerAngles;
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

调试

我以为是代码进行debug,不是的,是画线来进行调试,我猜这样方便后面好学习视野的范围

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

public class DebugTest_22 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 绘制一条线
        Debug.DrawLine(Vector3.zero, Vector3.one,Color.blue);

        // 绘制一条射线
        Debug.DrawRay(Vector3.zero, Vector3.up, Color.red);
    }
}

获取对象实例

可以简写gameObject获取属性,C#有点厉害,类里可以不用写this指针直接调用类对象。

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

public class Empty_23 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        // 获取对象的这个实例
        GameObject go = this.gameObject;
        Debug.Log(go.name);

        // 简便写法
        Debug.Log(gameObject.name);

        // tag标签
        Debug.Log(gameObject.tag);
        // 图层
        Debug.Log(gameObject.layer);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

生成gameObject对象,可以在A物体操作B物体

声音一个对象即可,然后在unity编辑器上给他附一个新值

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

public class Empty_23 : MonoBehaviour
{
    public GameObject myFirstNewGameObj;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(String.Format("myFirstNewGameObj name:{0}",myFirstNewGameObj.name));
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

在unity编辑器这里设置上一个对象就可以正常使用了
在这里插入图片描述

对象是对象,组件是组件

我以为可以gameObject走天下,没想到大意了,并不能一个gameObject走天下,只有transform这个组件封了个对象,因为这是必需的,其他组件如果利用模板函数来生成一个对应的组件对象。

		// 获取transform组件
        Debug.Log(transform.position);
        // 获取其他的组件,用模板的方式来获得对象
        BoxCollider bc = GetComponent<BoxCollider>();

添加组件

注意这个只有编辑器运行时候才可以创建出来这个组件,如果是这样创建的话,我认为必需要在代码里做好相应的初始化,毕竟脚本也是运行时产生的结果

	// 添加一个组件
	gameObject.AddComponent<AudioSource>();

获取组件

通过名字,名字是全匹配,或者按照标签来找到这个对象。

	GameObject test = GameObject.Find("Test");
    GameObject test2 = GameObject.FindWithTag("Test");

生成预设体

我当时就在想,如果需要多个预设体总不能一直让我拖来拖去吧,不累死我,按照vue框架也是一个v-for循环进行渲染。跟生成gameObject一个套路,先定义一个对象,然后把预设体的组件拖过来,然后进行绑定,最后调用Instantiate这个函数生成一个预设体实体

 	// 生成一个预设体实体
    Instantiate(myPrefab);

空空如也
在这里插入图片描述

运行时就可以出现啦,我们使用代码创造的预设体实体

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程同步-信号量-互斥量-条件变量

文章目录线程同步信号量互斥量条件变量线程同步 线程同步其实实现的是线程排队。防止线程同步访问共享资源造成冲突。多个线程访问共享资源的代码有可能是同一份代码&#xff0c;也有可能是不同的代码&#xff1b;无论是否执行同一份代码&#xff0c;只要这些线程的代码访问同…

Java避免死锁的几个常见方法(有测试代码和分析过程)

目录 Java避免死锁的几个常见方法 死锁产生的条件 上死锁代码 然后 &#xff1a;jstack 14320 >> jstack.text Java避免死锁的几个常见方法 Java避免死锁的几个常见方法 避免一个线程同时获取多个锁。避免一个线程在锁内同时占用多个资源&#xff0c;尽量保证每个锁…

Geoserver启动时提示:The GEOSERVER_HOME variable is not defined

场景 GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)&#xff1a; GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)_霸道流氓气质的博客-CSDN博客 在下载解压之后点击启动bat时提示: The GEOSERVER_HOME environment variable is not defin…

row_number 和 cte 使用实例:背包问题

row_number 和 cte 使用实例&#xff1a;背包问题背包问题01背包解决同一行数据需要引用两次的问题对 for xml 的结果进行引用时的处理完全背包多重背包小结背包问题 最近老顾从新把算法捡了起来&#xff0c;碰到了各种各样以前没见过的&#xff0c;工作中没遇到的问题&#x…

leetcode:快乐数(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字…

坚鹏:《银行业数字化转型指导意见》政策解读及银行数字化转型

中国银保监会《关于银行业保险业数字化转型的指导意见》政策解读及银行数字化转型课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道如何准确理解中国银保监会《关于银行业保险业数字化转型的指导意见》相关政策 不清楚中国银保监会《关于银行业保险业数字化转型…

使用AI进行“文本纠错”

AI在现实中的应用有很多&#xff0c;你有没有想过&#xff0c;它还可以进行文本纠错呢&#xff1f;传统的校对既耗时又枯燥&#xff0c;通过“AI纠错”&#xff0c;不仅能更快完成&#xff0c;还能提高准确度。那么AI“文本纠错”背后的原理是什么呢&#xff1f;和我一起看看吧…

Python综合案例-小费数据集的数据分析(详细思路+源码解析)

目录 1. 请导入相应模块并获取数据。导入待处理数据tips.xls&#xff0c;并显示前5行。 2、分析数据 3.增加一列“人均消费” 4查询抽烟男性中人均消费大于5的数据 5.分析小费金额和消费总额的关系&#xff0c;小费金额与消费总额是否存在正相关关系。画图观察。 6分析男女顾…

chatGPT写文章攻略-用chatGPT写网文

chatGPT可以写中文吗 ChatGPT可以写中文。在过去的几年中&#xff0c;许多深度学习机器翻译模型已经开始探索中英文翻译、去噪声、语音识别等任务&#xff0c;并且在这些任务中ChatGPT具有最先进的表现。 目前&#xff0c;例如GPT-3和GPT-2都可以用来生成中文文本。为此&…

以太坊上海升级,DeFi 3.0的序章

引言 距离以太坊Shapella升级&#xff08;也曾被称为上海升级&#xff09;仅剩一天的时间&#xff01;自2015年以太坊上线以来&#xff0c;它已成为世界排名第二的加密虚拟资产&#xff0c;以太坊诞生于行业的意义在于它能够让开发者构建智能合约和去中心化应用&#xff08;DAp…

Jumpserver与Freeipa集成(以及其他配置)

背景&#xff1a; jumpserver的安装参照&#xff1a;jumpserver的简单安装使用&#xff0c;Freeipa的安装参照&#xff1a;Freeipa的简单搭建配置。准备将Freeipa与Jumpserver集成。其实Freeipa搭建后linux客户端如果安装了Freeipa client。也能完成用户的授权权限管理了&…

肖 sir_就业课__005项目数据

项目数据 一、项目周期 &#xff08;1&#xff09;新项目&#xff1a;从无到有&#xff0c;从项目的开始到上线的时间 时间长&#xff1a;3个月、6个月、1年、2年 &#xff08;2&#xff09;老项目&#xff1a;迭代项目 迭代周期&#xff1a;1个月、2个月、3个月迭代、 &#…

现在是香港推动Web3的“正确时机” 将采取监管与发展并重策略

香港财政司司长陈茂波在香港特区政府网站发表司长随笔《发展Web3—守正创新 稳慎前行》&#xff0c;提出为了让Web3稳慎走好创新发展的道路&#xff0c;政府将采取“适当监管”和“推动发展”两者并重的策略&#xff0c;确保虚拟资产行业可持续和负责任发展。 此前&#xff0c;…

java_集合

1.集合 集合分为单列集合&#xff08;collection&#xff09;和双列集合&#xff08;map&#xff09;. 单列就是每个位置只有一个值&#xff0c;双列则是每个位置都是一对键值对&#xff0c;类似于python的字典。 2.collection 其中&#xff0c;collection又可以分为List…

全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)

1.1 电脑分区 1.1.1 分区原因 由于我们想要在电脑上同时安装Windows和Ubuntu系统&#xff0c;所以就要在window使用的内存中划分出来一段用来给Ubuntu系统使用&#xff0c;相当于一个应用程序一样 1.1.2 分区步骤 1.右击此电脑&#xff0c;点击管理&#xff0c;然后双击左侧…

【刷题笔记】--dp--376. 摆动序列122. 买卖股票的最佳时机 II

感觉自己dp还不是很会&#xff08;/(ㄒoㄒ)/~~ 写dp题的步骤&#xff1a;①通过定义子问题&#xff0c;确定dp[ ] or dp[ ][ ] 表示的含义 ②写出子问题的递归关系 ③确定初始条件 题目&#xff1a; 思路&#xff1a; ①确定dp的含义&#xff1a;dp[i]表示 到i位置&#x…

网络信息安全(三层设备部署DHCP服务器与DHCP中继、ICMP协议)

文章目录三层路由器部署DHCP服务器配置trunkVLAN创建将端口加入对应vlan路由创建子接口路由器创建地址池服务器配置静态IPDHCP服务器部署创建作用域在三层设备配置DHCP中继DHCP中继原理ICMP协议概述用途封装格式三层路由器部署DHCP服务器 配置trunk VLAN创建 这里以S1为例&…

Vulnhub:Digitalworld.local (Development)靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 查看网站首页源码 访问development目录&#xff0c;提示存在一个流量包 查看流量包发现另一个网站路径&#xff1a;/devel…

多模态之论文笔记ViLT

文章目录ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision一. 简介1.1 摘要1.2 文本编码器&#xff0c;图像编码器&#xff0c;特征交互复杂度分析1.2 特征交互方式分析1.3 图像特征提取分析二. 方法 Vision-and-Language Transformer2.1. 方…

【高危】Apache Linkis JDBC EngineConn 插件<1.3.2 存在反序列化漏洞

漏洞描述 Apache Linkis 是一个用于将上层应用与底层数据引擎解耦&#xff0c;提供标准化接口的中间件。 该项目受影响版本存在反序列化漏洞&#xff0c;由于ConnectionManager.java中未对dbUrl、username、password等参数进行充分过滤&#xff0c;当恶意用户完全控制应用程序…