阅读国外Coder教程时的笔记,Object Management篇(二)创建配置文件,代码简写

本文介绍了Unity中预制体管理的方法,包括使用Factory模式创建预制体、条件运算符?:的高效用法、变量属性的定制及自定义方法提高代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://catlikecoding.com/unity/tutorials/object-management/object-variety/

阅读国外Coder教程时的笔记,Object Management篇(一)

1.当你的项目中需要频繁创建预制体的时候,可能需要专门一个脚本去管理这些功能,这里估计称为Factory。我们知道引用一个脚本,就必须首先让这个脚本运行起来,即挂载到某个游戏物体上或者写成单例。这里介绍一种新的方法,通过API[CreateAssetMenu]将脚本转化AssetMenu文件,也可以直接拖拽到物体上。

[CreateAssetMenu]
public class ShapeFactory : ScriptableObject {}

AssetMenu文件
在这里插入图片描述
如果通过[SerializeField]创建数组变量,可以在配置文件上直接设置数量、赋值,如下
在这里插入图片描述
2.关键字 ?:
这个相信很多人都知道,其实就相当于:

if(....){
....
}
else{
.....
}

不同于原来的写法,? :可以直接用到其他语句中,形成复合语句(或者说作为方法参数或赋值参数),例如:

		int count = version <= 0 ? -version : reader.ReadInt();
		StartCoroutine(LoadLevel(version < 2 ? 1 : reader.ReadInt()));

第一条在判断的同时,也直接完成了赋值。
第二条在判断的同时,也直接作为自定义方法的参数。
这样写可以大大简化代码的书写。
3.定义变量属性时的一些操作
我们在定义变量时,可以为止设定一些属性(也可以不设),一般的写法为:
int a {get;set;}
如果写成 int a{get;private set;},基本把a设为public,也不可以为它赋值。
也可以写成:

int a{
	get{
	if(A!=null){
		return A;
	}
	else{
	Debug.LogError("value error!");
	}		
	}
	set{
	value=A;
	}
}
//或者写成 int a =>单个语句;
//value是自带的变量,代表这个变量的值,这里写的是a的值等于变量A的值

这样可以在里面插入各种各样的语句,丰富功能。
3.使用自定义方法时,提高代码可读性的写法
我们都知道把鼠标停在方法上可以加载方法需要传入一些什么参数,比如:
调用ColorHSV方法需要传入以下参数。
在这里插入图片描述
写成代码之后,咋一眼看根本不知道这些数字代表什么意思。

instance.SetColor(Random.ColorHSV(0f, 1f, 0.5f, 1f, 0.25f, 1f, 1f, 1f));

我们可以换一种写法:

		instance.SetColor(Random.ColorHSV(
			hueMin: 0f, hueMax: 1f,
			saturationMin: 0.5f, saturationMax: 1f,
			valueMin: 0.25f, valueMax: 1f,
			alphaMin: 1f, alphaMax: 1f
		));

其实就是传入值前面加上 *变量名:*的关键字而已,功能上没有任何区别,但是更方便了阅读代码的人。
4.关键字var
使用关键字var声明变量,一般用在创建新变量的时候。这个时候变量的类型会自动和new关键字后面的类类型对齐,即

var a =new ClassA();
//这个时候a的类类型就是ClassA
//或者
var a =1;
//这个时候 a的类型就是int

虽然var很方便,但是乱用会使代码变得不清晰。就跟上面说的一样,一般和new搭配使用。或者在使用gameObject.AddComponet的时候一起使用,即

var a= Object.gameObject.AddComponet<ClassA>();
//这个时候a的类型也很明确是ClassA

以上,希望对大家有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值