本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要:
全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho
如果你发现了文章内特殊的字体格式,那是AI补充的知识,我发现原网站下面有答案,我将会把答案以不同样式穿插在回答之中
目录
[1. 如果我们想为Unity中的Transform类添加一个自定义的方法,应该如何处理?](#1. 如果我们想为Unity中的Transform类添加一个自定义的方法,应该如何处理?)
[2. 请说出using关键字的两个作用](#2. 请说出using关键字的两个作用)
[3. C#中Dictionary不支持相同键存储 如果想要一个键对应多个值如何处理?](#中Dictionary不支持相同键存储 如果想要一个键对应多个值如何处理?)
[4. 请问下面代码的最终打印结果是什么?为什么?](#4. 请问下面代码的最终打印结果是什么?为什么?)
[5. 上题中的代码,如果我们希望打印出0~9,应该如何修改代码?](#5. 上题中的代码,如果我们希望打印出0~9,应该如何修改代码?)
[1. Unity中如何将本地坐标转为世界坐标?](#1. Unity中如何将本地坐标转为世界坐标?)
[2. Unity中如何计算出两个向量之间的夹角,请说出两种方式](#2. Unity中如何计算出两个向量之间的夹角,请说出两种方式)
[3. 请写出UGUI中两种处理异形按钮的具体方法](#3. 请写出UGUI中两种处理异形按钮的具体方法)
[4. 请说出Unity中如何进行数据持久化,至少说出5种方式](#4. 请说出Unity中如何进行数据持久化,至少说出5种方式)
[5. 在Unity中如何控制渲染优先级?(谁先渲染谁后渲染,分情况回答)](#5. 在Unity中如何控制渲染优先级?(谁先渲染谁后渲染,分情况回答))
C#
1. 如果我们想为Unity中的Transform类添加一个自定义的方法,应该如何处理?
this拓展方法,下面是一个演示
自定义静态拓展方法
cs
public static class Test
{
public static void TransformObj(this Transform transform, int a) {
Debug.Log(a);
}
}
在其他地方使用
cs
this.transform.TransformObj(1);
合理输出

2. 请说出using关键字的两个作用
安全使用流文件读写
using 命名空间
Unity数据持久化 之 向文件流读写(详细Plus版)_unity filestream-CSDN博客
**3. C#中Dictionary不支持相同键存储
如果想要一个键对应多个值如何处理?**
字典套字典,字典套顺序表
虽然有一点点麻烦,但是确实比较常用

4. 请问下面代码的最终打印结果是什么?为什么?

10个10 Action本质是委托,委托 相当于一个函数的容器 ,被调用时将依次执行 其添加的匿名函数 ,闭包是捕获变量而不是其值,所有委托共享同一个 i
变量

5. 上题中的代码,如果我们希望打印出0~9,应该如何修改代码?
cs
static void Main(string[] args)
{
Action action = null;
for (int i = 0; i < 10; i++)
{
int temp = i;
action += () =>
{
Console.WriteLine(temp);
};
}
action();
}
Unity
1. Unity中如何将本地坐标转为世界坐标?
Api:TransformPoint
cs
// 定义一个本地坐标点
Vector3 localPoint = new Vector3(1, 1, 1);
// 获取物体的Transform组件
Transform objectTransform = transform;
// 将本地坐标转换为世界坐标
Vector3 worldPoint = objectTransform.TransformPoint(localPoint);
Debug.Log("世界坐标: " + worldPoint);

2. Unity中如何计算出两个向量之间的夹角,请说出两种方式
Api: Vector3.Angle
因为点乘是a·b = |a| * |b| * cosθ
所以θ = arccos((a·b) / (|a| * |b|))
cs
using UnityEngine;
public class DotAngleCalculation : MonoBehaviour
{
void Start()
{
// 定义向量1
Vector3 vector1 = transform.forward;
// 定义向量2
Vector3 vector2 = new Vector3(0, 1, 0);
// 计算向量1的模长
float magnitude1 = vector1.magnitude;
// 计算向量2的模长
float magnitude2 = vector2.magnitude;
// 计算向量点积
float dotResult = Vector3.Dot(vector1, vector2);
// 计算夹角的余弦值
float cosAngle = dotResult / (magnitude1 * magnitude2);
// 使用反余弦函数得到弧度制的夹角
float radianAngle = Mathf.Acos(cosAngle);
// 将弧度转换为角度
float angle = radianAngle * Mathf.Rad2Deg;
Debug.Log("两向量夹角为:" + angle + " 度");
}
}

3. 请写出UGUI中两种处理异形按钮的具体方法
拼接和Mask2D
4. 请说出Unity中如何进行数据持久化,至少说出5种方式
json,二进制,xml,playerprefs,数据库?
sc是编辑器数据持持

5. 在Unity中如何控制渲染优先级?(谁先渲染谁后渲染,分情况回答)
