个人可以做网站导航/台州网站优化公司

个人可以做网站导航,台州网站优化公司,公司网站销售怎么做的,软件开发需要多久本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体…

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

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

        如果你发现了文章内特殊的字体格式,那是AI补充的知识

目录

C#

1.Equals可以判断一些引用类型是否相等 尤其是对象不同时

2.深浅拷贝主要区别为引用类型是否独立

3.第二种速度更快 因为List涉及到了扩容

4.B先打印 ,A:10 B:11

5.A 11 B11 因为是引用类型

Unity

1. Unity中当一个细小高速物体撞击另一个较大物体时,会出现什么情况?如何避免?

2. 请简述一下Prefab(预制体)的本质是什么?

3.Unity是否支持写成多线程程序?如果支持的话需要注意什么?

4. 请简述一下对象池,在游戏开发中我们什么时候会用到它?

5. 什么是DrawCall?DrawCall为什么会影响游戏运行效率?如何减少DrawCall?


C#

1.Equals可以判断一些引用类型是否相等 尤其是对象不同时

       对值类型 二者都可以使用 

static void test() {int a0 =1;int a1 =2;Console.Write(a0==a1?a0:a1);Console.Write(a0.Equals(a1));
}
test();

        但是当对象比较变成 不同的类  时 == 就不被允许了(除非operator重载运算符)

        当然,你去比较两个相同类型的对象仍然是可以的 

a Obja0 = new a();
b Objb = new b();
a Obja1 = new a();
Obja0 = Obja1;Console.Write(Obja0.Equals(Objb));
Console.Write(Obja0.Equals(Obja1));
Console.Write(Obja0  == Obja1);
特性== 操作符Equals 方法
本质运算符(可重载)虚方法(可重写)
默认行为值类型:比较值;引用类型:比较引用地址值类型:比较值;引用类型:比较引用地址
可自定义性通过重载 operator == 改变行为通过重写 Equals 方法改变行为
null 处理可直接比较 null(如 obj == null需先检查是否为 null,否则可能抛 NullReferenceException
多态性静态绑定(编译时决定行为)动态绑定(运行时根据实际类型决定行为)

         另外对于string引用类型却有值类型的特殊性,Equals比较的是其字符串内容(值)

2.深浅拷贝主要区别为引用类型是否独立

public class MyClass : ICloneable
{public int Value { get; set; }public List<int> List { get; set; } = new List<int>();// 浅拷贝实现public object Clone(){return new MyClass{Value = this.Value,    // 值类型直接复制List = this.List       // 引用类型复制指针};}
}// 使用示例
MyClass original = new MyClass 
{ Value = 10,List = new List<int>() 
};// 浅拷贝
MyClass shallowCopy = (MyClass)original.Clone();// 修改拷贝对象
shallowCopy.Value = 20;       // 不影响 original.Value(值类型独立)
shallowCopy.List.Add(1);      // 会影响 original.List(共享同一个列表实例)
using System;
using System.Collections.Generic;public class MyClass : ICloneable
{public int Value { get; set; }public List<int> List { get; set; }// 实现深拷贝public object Clone(){return new MyClass{Value = this.Value,  // 值类型直接复制List = new List<int>(this.List)  // 创建新列表实例(深拷贝关键)};}
}// 使用示例
MyClass original = new MyClass 
{ Value = 10,List = new List<int>() 
};// 深拷贝
MyClass deepCopy = (MyClass)original.Clone();// 修改拷贝后的对象
deepCopy.Value = 20;       // 不影响 original.Value
deepCopy.List.Add(1);      // 不影响 original.List
特性浅拷贝(Shallow Copy)深拷贝(Deep Copy)
复制层次仅复制对象本身及其直接字段(一层)递归复制对象及其所有引用字段的完整对象树
引用类型字段复制引用地址(新旧对象共享同一引用对象)创建新对象并复制内容(新旧对象引用完全独立)
性能高效(仅复制一层)较低效(需递归复制所有嵌套对象)
适用场景引用字段不可变或无需独立修改时引用字段需要完全独立修改时

3.第二种速度更快 因为List涉及到了扩容

        关于扩容简单写法请看这篇之中的c#部分第五题:
C# &Unity 唐老狮 No.1 模拟面试题-CSDN博客

4.B先打印 ,A:10 B:11

        异常捕捉的机制是先try然后接着finally执行捕获 再执行其他地方的代码 但是return是已经返回出去了i,因此是先return 再B处 再A处

5.A 11 B11 因为是引用类型

Unity

1. Unity中当一个细小高速物体撞击另一个较大物体时,会出现什么情况?如何避免?

        会穿过去 ,或者卡在大球的某个部分抖动,解决方法:

1.将碰撞检测改为更好的方式:

2.射线检测

可以给小球加一个很短的射线检测 当撞击前就做出一定的预处理

这个方案由ai提供 我还真没用过

3.修改固定时间步长
在 Project Settings --> Time 中减少 Fixed Timestep 值(如从0.02改为0.01),提升检测频率

2. 请简述一下Prefab(预制体)的本质是什么?

        本质是一个配置文件,里面有很多关于该预制体的参数和基本信息,甚至可以自行修改

3.Unity是否支持写成多线程程序?如果支持的话需要注意什么?

        支持,但是要注意unity本身就带有一个主线程,其大部分api都只能在主线程里面跑,如果在其他线程和主线程同时调用unity的一这些api(比如translate,GetComponent等等)会导致线程冲突报错 所以禁止直接调用Unity API,但可通过 MainThreadDispatcher 将任务排队到主线程执行

// 示例:主线程调度器
public class MainThreadDispatcher : MonoBehaviour {private static Queue<Action> tasks = new Queue<Action>();void Update() {while (tasks.Count > 0) tasks.Dequeue().Invoke();}public static void RunOnMainThread(Action action) => tasks.Enqueue(action);
}

        同时还要注意多线程本身就应该注意的问题:

        内存泄漏,是指要在合适的时机对后台关闭后台线程,不然这个线程将会一直运行 哪怕你停止运行了游戏 在Editor之中仍然在跑,直到这个线程持有了大量的资源,导致可用内存逐渐减少, 这种现象就是内存泄漏

        避免死锁,即多个线程相互等待对方释放资源而陷入僵持状态

4. 请简述一下对象池,在游戏开发中我们什么时候会用到它?

知识加油站:

Unity 高级一些的对象池(初版)(非基础警告)_unity 高级对象池-CSDN博客

        对象池也叫缓存池 是一个用于存储和拿出频繁销毁物体或对象的管理类

在大量且频繁创建与销毁的场景之中会用到,比如音效,子弹,大量敌人

5. 什么是DrawCall?DrawCall为什么会影响游戏运行效率?如何减少DrawCall?

        知识加油站:这里挖个坑 关于shader基础知识的链接将会放在这里

        DrawCall就是 CPU 向 GPU 发送指令,要求 GPU 对一组图元(如三角形、四边形等)进行渲染的操作,每一次对图形api的调用都会产生一次drawcall

        如果大量的drawcall:

  • CPU 开销:每次 Draw Call 都需要 CPU 进行准备工作,如设置渲染状态、传递顶点数据、纹理数据等。大量的 Draw Call 会使 CPU 花费大量时间在这些准备工作上,从而减少了 CPU 用于处理游戏逻辑等其他重要任务的时间。
  • GPU 上下文切换:GPU 在处理不同的 Draw Call 时,可能需要切换渲染状态,如切换纹理、材质、着色器等。频繁的上下文切换会增加 GPU 的额外开销,降低渲染效率。
  • 带宽限制:Draw Call 需要在 CPU 和 GPU 之间传输数据,包括顶点数据、索引数据、纹理数据等。大量的 Draw Call 会导致数据传输量增大,可能会超出总线带宽限制,造成数据堵塞,影响渲染速度

        减少:

        1.对UI进行剔除:对于不在屏幕范围内或被其他 UI 遮挡的 UI 元素,不进行绘制,可以通过计算 UI 元素是否在视口内,以及使用遮挡剔除技术来实现,例如,在 Unity 中可以利用 Canvas Group 组件的 Alpha 值为 0 时自动进行剔除的特性,或者自定义脚本根据 UI 的可见性来控制是否渲染

       2. 对网格进行合批(动态 在一定程度上unity自动处理,但是有很大限制,可以自己编写脚本处理

        静态 只针对静态的物体,当勾选了static选项以后 unity会自动做处理)

        3. 对图片进行打图集        

       唐老师在unity核心之中讲过打图集相关内容

       也可以参考本篇Unity UGUI 之 图集_unity 图集-CSDN博客

AI补充:

  • 使用批处理渲染器:一些渲染器提供了批处理功能,如 URP(Universal Render Pipeline)中的 SRP Batcher。它可以在不改变材质和模型的情况下,对物体进行批处理,提高渲染效率。
  • 优化材质和着色器:尽量减少材质和着色器的复杂度,避免使用过多的变体。过多的材质变体和复杂的着色器计算会增加 Draw Call 的开销。可以通过合并相似的材质,减少不必要的纹理采样和计算来优化。

        

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

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

相关文章

Denoising Diffusion Implicit Models (DDIM)

因为扩散模型的正向过程可以实现跳步&#xff0c;其马尔科夫性并不重要&#xff0c;因此DDIM尝试在反向过程中也舍弃马尔科夫性的约束。在引入一个可控参数 σ t \sigma_t σt​后&#xff0c;反向过程的迭代被整理为预测 x 0 x_0 x0​后重新进行正向扩散的过程&#xff0c;扩散…

LearnOpenGL之Shader编程用算法绘画

———————————————————— 前序 ——————————————————— AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合&#xff1a; Github地址&#xff1a;GitHub - wangyongyao1989/AndroidLearnOpenGL: OpenGL基础及运用 系列文章&#xff…

第5章_管理策略

管理策略 如前所述&#xff0c;策略定义了在授予对对象的访问权限之前必须满足的条件。 单击 Policy &#xff08;策略&#xff09; 选项卡可查看与资源服务器关联的所有策略。 在此选项卡上&#xff0c;您可以查看以前创建的策略列表&#xff0c;以及创建和编辑策略。 要创…

Chromium_src源码

Chromium_src源码 码云上有一个OpenHarmony-TPC/chromium_src项目&#xff0c;目前已经停止维护了&#xff0c;迁移到GitCode上了&#xff0c;源代码项目地址为&#xff1a;openharmony-tpc/chromium_chrome 特此记录一下老的项目的相关软件架构 Chromium 简介 软件架构 软…

Android ObjectBox数据库使用与集成指南

ObjectBox其核心特点ObjectBox与 SQLite 和 Realm 的对比Android集成ObjectBox创建ObjectBox实体对象创建ObjectBox操作管理类OBManager在Application初始化ObjectBox插入或更新数据查询数据统计数据分页数据查询删除数据总结今天分享一套Android另一个数据库ObjectBox。Object…

013作用域

一、基本概念 C语言中&#xff0c;标识符都有一定的可见范围&#xff0c;这些可见范围保证了标识符只能在一个有限的区域内使用&#xff0c;这个可见范围&#xff0c;被称为作用域&#xff08;scope&#xff09;。 软件开发中&#xff0c;尽量缩小标识符的作用域是一项基本原…

AH表情捕捉设备:虚拟人动态表情捕捉

在虚拟人应用里&#xff0c;除了关注虚拟人能否展现流畅的肢体动作&#xff0c;其表情是否自然流畅同样关键。虚拟人作为新兴技术产物&#xff0c;广泛应用于娱乐直播、影视动画等领域。自然的表情能让虚拟人更具亲和力与真实感&#xff0c;大幅提升用户体验。 而广州虚拟动力…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

C++预编译、编译、汇编、链接详解

一、准备阶段 g编译环境&#xff0c;配置好环境变量 新建一个helloworld.cpp #include <iostream> using namespace std; int main() {cout << "Hello, world!" << endl;return 0; }命令查看 g --help 二、预编译 预处理阶段对自定义和预定义…

docker使用代理的简单配置

1准备代理服务器 准备代理服务器&#xff0c;例如192.168.120.168:52209 配置docker.service文件 查看service文件的位置 systemctl status docker 编辑service文件 vim /usr/lib/systemd/system/docker.service 添加代理配置 ... [Service] Environment"HTTP_PROXY…

【FL0090】基于SSM和微信小程序的球馆预约系统

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…

使用esp32接入大模型(http请求)

本示例适用于所有乐鑫的esp32模组及开发板。使用串口通信和http协议。实现简单的和大模型对话要求。 话不多说直接上代码 #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h>#define DEBUG 1// 替换为你的Wi-Fi网络凭据 #define WLAN_SSI…

GitHub高效搜索工具

[GitHub项目搜索工具] 一款开发者专属的星矿探测仪&#xff01; 你是否还在用stars:>1000手动筛选GitHub项目&#xff1f; 你是否经常为了找一个合适的开源库翻遍搜索结果&#xff1f; 这个工具或许能改变你的代码资源发掘方式… &#x1f31f; 痛点洞察 在GitHub的3.28亿个…

【uniapp原生】实时记录接口请求延迟,并生成写入文件到安卓设备

在开发实时数据监控应用时&#xff0c;记录接口请求的延迟对于性能分析和用户体验优化至关重要。本文将基于 UniApp 框架&#xff0c;介绍如何实现一个实时记录接口请求延迟的功能&#xff0c;并深入解析相关代码的实现细节。 前期准备&必要的理解 1. 功能概述 该功能的…

支付宝 IoT 设备入门宝典(下)设备经营篇

上篇介绍了支付宝 IoT 设备管理&#xff0c;但除了这些基础功能外&#xff0c;商户还可以利用设备进行一些运营动作&#xff0c;让设备更好的帮助自己&#xff0c;本篇就会以设备经营为中心&#xff0c;介绍常见的设备相关能力和问题解决方案。如果对上篇感兴趣&#xff0c;可以…

船舶广播系统:航行中的信息枢纽和安全保障

船舶广播系统是船舶重要的通信设备之一&#xff0c;承担着船舶内部通信、对外联络、应急广播等重要功能&#xff0c;船舶广播系统是船舶上的一种重要设备&#xff0c;它可以用于传递重要信息和指示&#xff0c;是保障船舶安全航行和乘客安全的重要设施。 船舶广播系统通常由以…

Unity插件-Mirror使用方法(一)Mirror介绍

目录 一、使用介绍 二、插件介绍 1、简述 2、核心功能与特点 基于组件的高层抽象 服务器-客户端架构 序列化与同步 可扩展性与灵活性 跨平台支持 社区与生态 3、典型应用场景 4、基本使用示例 安装 设置 NetworkManager 同步变量与 RPC 5、优缺点对比 6、为什…

企业如何挖掘数据资产价值?

本期推荐&#xff1a;挖掘数据资产价值&#xff0c;赋能企业发展&#xff0c;共28页ppt。 关注WeChat Subscription Account【智慧城市指北】&#xff0c;回复关键字“20250228数据资产”&#xff0c;获取获得本文电子版材料的方式(非无偿&#xff09;~ 篇幅限制&#xff0c;…

使用tkinter有UI方式来拷贝Excel文件

有需求使用tkinter 有用户交互界面来拷贝Excel文件&#xff0c;最后进行打包完成 代码如下&#xff0c;实现思路是先使用tkinter库选择Excel路径&#xff0c;然后保存到txt文档&#xff0c; import time import tkinter from pathlib import Path from typing import Optiona…

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…