C# Unity 唐老狮 No.1 模拟面试题

         本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要:

Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho

目录

 C#

1.其他类型转object类型(值类型转引用类型) 称为装箱

2.值类型指向栈内存,赋值修改自己栈上的内容

3.委托可以赋值、调用,支持多播(组合多个方法)

4.显示声明接口

5. 在扩容函数之中,以一个标志位进行双倍扩容 eg: 4 8 16 32......

Unity 

1.向量点乘 为数 可以根据其夹角判断两向量的方向关系

2.CD, Unity 的 API 绝大多数只能在主线程调用

3.对比表

4.在同一个线程之中,执行协程


 C#

1.其他类型转object类型(值类型转引用类型) 称为装箱

int x = 10;
object obj = x; // 装箱

反之(引用转值)称为拆箱

int y = (int)obj; // 拆箱

补充:虽然和装拆箱没有关系 但是可以用as(类型转换) is(检查类型) 配合使用

2.值类型指向栈内存,赋值修改自己栈上的内容

int a = 10;
int b = a; // b 是 a 的副本
b = 20;    // a 仍然是 10

引用类型指向堆内存,赋值修改指向栈的内存,新变量和原变量指向同一对象

int[] arr1 = new int[] { 1, 2, 3 };
int[] arr2 = arr1; // arr2 和 arr1 指向同一对象
arr2[0] = 10;      // arr1[0] 也变为 10

3.委托可以赋值、调用,支持多播(组合多个方法)

public delegate void MyDelegate(string message);
MyDelegate del = Console.WriteLine;
del("Hello");

事件是更加安全的委托,只能用在类之中使用,也只能在定义它的类中触发(Invoke),外部只能订阅(+=)和取消订阅(-=

public event EventHandler MyEvent;
MyEvent += (sender, args) => Console.WriteLine("Event triggered");
MyEvent?.Invoke(this, EventArgs.Empty);

4.显示声明接口

知识加油站:

C# & Unity 面向对象补全计划 之 接口_unity c# 接口-CSDN博客

interface IA { void Test(); }
interface IB { void Test(); }class MyClass : IA, IB
{void IA.Test() => Console.WriteLine("IA.Test");void IB.Test() => Console.WriteLine("IB.Test");
}// 使用
MyClass obj = new MyClass();
((IA)obj).Test(); // 调用 IA.Test
((IB)obj).Test(); // 调用 IB.Test

5. 在扩容函数之中,以一个标志位进行双倍扩容 eg: 4 8 16 32......

private void EnsureCapacity(int min)
{if (_items.Length < min){int newCapacity = _items.Length == 0 ? 4 : _items.Length * 2;if (newCapacity < min) newCapacity = min;Array.Resize(ref _items, newCapacity);}
}

Unity 

1.向量点乘 为数 可以根据其夹角判断两向量的方向关系

        只是加油站:unity中的数学 之 向量篇_unity 向量-CSDN博客

  • 结果为标量,计算公式:a·b = |a||b|cosθ
  • 作用
    • 判断两个向量的方向关系:
      • 结果 > 0:夹角 < 90°(同方向)
      • 结果 = 0:夹角 = 90°(垂直)
      • 结果 < 0:夹角 > 90°(反方向)
    • 计算投影长度(如角色面朝方向的速度)

向量叉乘 为新向量 可以判断两个向量的顺序(相对方向) 可以用新向量做原平面的法线向量

  • 结果为垂直于原两向量的新向量(右手法则),计算公式:|a×b| = |a||b|sinθ
  • 作用
    • 判断相对方向(顺时针/逆时针)。
    • 计算平面法向量(如计算地形坡度)。
    • 用于旋转轴计算(如绕某个轴旋转)。

2.CD, Unity 的 API 绝大多数只能在主线程调用

c:在宏观位置以及逻辑上不能同时修改位置

d:你也不能重复销毁同一个对象(因其内存不存在)

3.对比表

特性StreamingAssetsPathPersistentDataPath
读写权限只读(移动端)可读写
打包包含打包时原样保留不包含,首次运行时创建
平台路径示例Android: jar:file:// 包内路径Android: /storage/emulated/0/Android/data/...
典型用途存放初始资源(配置表、预制体)存放动态生成的文件(存档、截图)
访问方式需用 UnityWebRequest 或 System.IO(PC)直接使用 System.IO 读写

4.在同一个线程之中,执行协程

        知识加油站:unity保姆级教程之协同程序_unity协同-CSDN博客

        "协程在遇到 yield return 时会暂停自身,控制权返回给Unity的主线程工作流(处理渲染、输入等),当预设条件满足(例如:指定时间结束/资源加载完成)后,Unity主线程会在正确时机继续执行协程剩余代码 

        这里我举一个经典的等待时间的例子:

        

IEnumerator Example2()
{Debug.Log("实时时间:" + Time.time);yield return new WaitForSeconds(2f);Debug.Log("2秒后:" + Time.time); 
}

        执行顺序为:开始协程 ----> 打印实时时间 ------>等待两秒(这期间会执行其他本线程的逻辑)------->打印2秒后的时间

        这里我要说一个暴论,在<<游戏编程模式>>一书之中,使用了while去模拟游戏的循环,添加了各种各样的打断条件,其实协程的底层也可以这么看,如果我说的有误,请以你的理解为准

  • 协程本质
    • 基于 C# 的迭代器(IEnumerator)+ 协程调度器
    • 协程不是多线程,所有代码仍在主线程执行

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

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

相关文章

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识&#xff0c;并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具&#xff08;fping&#xff0c;…

P8697 [蓝桥杯 2019 国 C] 最长子序列

P8697 [蓝桥杯 2019 国 C] 最长子序列 题目 分析代码 题目 分析 先分析一波xdm 题意呢就是在s中找有多少个能和t匹配的字符&#xff0c;注意&#xff1a;连续匹配&#xff0c;输出连续的次数 欧克&#xff0c;开始分析&#xff0c;首先&#xff0c;哎~字母&#xff01;还强调…

一篇docker从入门到精通

Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙盒机制&#xff0c;相互之间不会有任何接口&#xff08;类似 iP…

TCP/IP 5层协议簇:物理层

目录 1. 物理层&#xff08;physical layer&#xff09; 2. 网线/双绞线 1. 物理层&#xff08;physical layer&#xff09; 工作设备&#xff1a;网线、光纤、空气 传输的东西是比特bit 基本单位如下&#xff1a;数字信号 信号&#xff1a;【模拟信号&#xff08;放大器&a…

生成对抗网络(GAN)

生成对抗网络&#xff08;GAN&#xff09;:生成对抗网络是一种深度学习模型&#xff0c;由 Ian Goodfellow 等人在 2014 年提出。GAN由生成器和判别器组成&#xff0c;生成器生成假数据&#xff0c;判别器区分真假数据。两者通过对抗训练不断提升&#xff0c;最终生成器能够生成…

FastJSON 默认行为:JSON.toJSONString 忽略 null 字段

完整的 FakeRegistrationController 代码&#xff0c;这让我可以全面分析后端逻辑&#xff0c;特别是为什么空的字段&#xff08;如 compareDate&#xff09;不返回给前端。我将详细分析代码的每个接口&#xff0c;尤其是与 list 请求和字段返回相关的部分&#xff0c;并解释原…

网络通信/IP网络划分/子网掩码的概念和使用

文章目录 概述子网的考题子网掩码的历史有/无类地址子网划分!子网掩码超网技术/CIDR子网掩码和路由IP子网掩码定义 网络规划网络规划-拆子网网络规划-组超网子网划分案例 区分于其他特殊IP地址IP地址和网络地址子网掩码和网络地址子网掩码和广播地址 子网间的通信其他 概述 本…

中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!

Trae是什么 Trae 是字节跳动推出的免费 AI IDE&#xff0c;通过 AI 技术提升开发效率。支持中文&#xff0c;集成了 Claude 3.5 和 GPT-4 等主流 AI 模型&#xff0c;完全免费使用。Trae 的主要功能包括 Builder 模式和 Chat 模式&#xff0c;其中 Builder 模式可帮助开发者从…

SpringBatch简单处理多表批量动态更新

项目需要处理一堆表&#xff0c;这些表数据量不是很大都有经纬度信息&#xff0c;但是这些表的数据没有流域信息&#xff0c;需要按经纬度信息计算所属流域信息。比较简单的项目&#xff0c;按DeepSeek提示思索完成开发&#xff0c;AI真好用。 阿里AI个人版本IDEA安装 IDEA中使…

C++ | 高级教程 | 文件和流

&#x1f47b; 概念 文件流输出使用标准库 fstream&#xff0c;定义三个新的数据类型&#xff1a; 数据类型描述ofstream输出文件流&#xff0c;用于创建文件并向文件写入信息。ifstream输入文件流&#xff0c;用于从文件读取信息。fstream文件流&#xff0c;且同时具有 ofst…

0.MySQL安装|卸载内置环境|配置官方yum源|安装mysql|登录mysql|设置配置文件(centos8.2)

卸载内置环境 检查是否有mariadb和mysql服务 ps ajx |grep mariadb ps ajx |grep mysql停止mysql服务 systemctl stop mysqld找到mysql安装包 rpm -qa | grep mysql删除安装包 rpm -qa | grep mysql | xargs yum -y remove检查 ls /etc/my.cnfls /var/lib/mysql/配置官方…

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…

将DeepSeek接入vscode的N种方法

接入deepseek方法一:cline 步骤1:安装 Visual Studio Code 后,左侧导航栏上点击扩展。 步骤2:搜索 cline,找到插件后点击安装。 步骤3:在大模型下拉菜单中找到deep seek,然后下面的输入框输入你在deepseek申请的api key,就可以用了 让deepseek给我写了一首关于天气的…

QListView实现文件选择功能

一.效果 这个功能很常用,但是最高效的做法是先让左侧的源列表默认排序,然后再进行文件选择,这样在选择操作后,无论是源列表还是目标列表,都能很容易保证原来的顺序。 二.实现 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #in…

组件传递props校验

注意&#xff1a;prop是只读的&#xff01;不可以修改父组件的数据。 可以检验传过来的内容是否类型没问题。 App.vue <template><div><!-- <parentDemo/> --><componentA/></div></template> <script> import ComponentA …

好用的Docker项目:本地部署IOPaint打造专属在线图片处理工作站

文章目录 前言1.什么是IOPaint&#xff1f;2.本地部署IOPaint3.IOPaint简单实用4.公网远程访问本地IOPaint5.内网穿透工具安装6.配置公网地址7.使用固定公网地址远程访问总结 前言 在这个快节奏的时代&#xff0c;一张完美的照片往往能带来意想不到的效果。但有时候&#xff0…

P8716 [蓝桥杯 2020 省 AB2] 回文日期

1 题目说明 2 题目分析 暴力不会超时&#xff0c;O(n)的时间复杂度&#xff0c; < 1 0 8 <10^8 <108。分析见代码&#xff1a; #include<iostream> #include<string> using namespace std;int m[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};// 判断日期…

Redisson使用场景及原理

目录 一、前言 二、安装Redis 1、Windows安装Redis ​2、启动方式 3、设置密码 三、项目集成Redission客户端 1、引入依赖 四、实用场景 1、操作缓存 2、分布式锁 3、限流 3.1 创建限流器 3.2 设置限流参数 3.3 获取令牌 3.4 带超时时间获取令牌 3.5 总结 一、…

观成科技:海莲花“PerfSpyRAT”木马加密通信分析

1.概述 在2024年9月中旬至10月&#xff0c;东南亚APT组织“海莲花”通过GitHub发布开源安全工具项目&#xff0c;针对网络安全人员发起了定向攻击。通过对相关攻击活动进行分析&#xff0c;可以将其与一些海莲花的样本关联起来。这些样本的通信数据结构与海莲花此前使用的攻击…

如何在docker上部署java服务

目录结构 首先 Dockerfile FROM bladex/alpine-java:openjdk17_cn_slimMAINTAINER admin@rsz.comENV TZ=Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN mkdir -p /xhWORKDIR /xhEXPOSE 8106ADD ./blade-system.…