unity学习中的(笔记)

这篇博客详细介绍了Unity开发中的一些关键概念,包括对象的声明(Vector2与Vector3)、碰撞器与Trigger触发器的使用、属性定义、单例模式的应用、GetKeyDown与GetKey的区别,以及游戏物体的创建和组件管理。此外,还讨论了如何通过代码添加组件、禁用/启用GameObject以及延时函数调用等实用技巧。

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

声明对象

变量声明为 Vector2 类型表明只含2D属性
变量声明为 Vector3 类型则其包含3D属性


/*	物体的position属性(x,y)储存在变量pos2中	*/
Vector2 pos2 = transform.position;		//transform为脚本挂载的游戏物体的transform

/*物体的position属性(x,y,z)储存在pos3中*/
Vector3 pos3 = transform.position;


碰撞器

两个游戏物体都具有碰撞器,且运动的一方有刚体组件。

Trigger触发器

触发检测:
两游戏物体都具有碰撞器,且其中一个游戏物体具有刚体组件。
可以将运动的物体设为 is Trigger。

/*持续接触触发器*/
private void OnTriggerStay2D(Collider2D collision)
{
	Debug.Log("与我们发生碰撞的对象是:"+collision)
}
/*接触触发器*/
private void OnTriggerEnter2D(Collider2D collision)
{	}
/*离开触发器*/
private void On	TriggerExit(Collider2D collision)
{	}

属性定义和使用

  • currentHealth声明为private,外部无法访问currentHealth的值,通过定义一个属性来获取到currentHealth的值。
  • 如果声明为public类型,则外部可通过访问currentHealth并改变其值,这就导致了数据的不安全。
private int currentHealth;
public int Health
{
	get
	{
		return currentHealth;
	}
} 

单例模式

外部可以通过 类型.Instance. 来点出此脚本中的方法来调用

public static (脚本的类型) 变量(_instance);
public static 类型 Instance{
	get{ return _instance; }
}

GetKeyDown与GetKey区别

GetKey  指按键被按下时一直持续的返回true
GetKeyDown 指按键被按下的那一帧返回true
GetKeyUp 指释放按键的那一帧返回true

if 与 else if区别

	 if :	所有 if 条件语句会依次执行,互相不影响。
else if :	当满足其中的一个 else if 条件时进入执行语句,其他语句不执行;
			满足 if 条件时则去执行if中的语句,其他语句不执行

锁定游戏物体的位置(极轴)

在游戏物体的 rigidbody 组件下找到 Constraints 属性进行勾选对应需要锁定的轴

创建游戏物体

方法一:Start()内部创建
		GameObject go = new  GameObject ( " Cube " ) ;	//可对游戏物体进行操作
方法二:根据Prefab或另一个物体克隆(Instance构造物体)
		public GameObject prefab;
		
		GameObject.Instantiate ( prefab );		//实例化prefab物体
方法三:创建基本游戏物体
		GameObject.CreatePrimitive ( PrimitiveType.Plane ) ;
		GameObject.CreatePrimitive ( PrimitiveType.Cube) ;

通过代码添加组件(AddComponent)

需要通过游戏物体来调用

//实例化cube
GameObject go = GameObject.CreatePrimitive ( PrimitiveType.Cube) ;

//给cube添加刚体组件		
go.AddComponent<Rigidbody>();

//给cube添加脚本					
go.AddComponent<(C#脚本名称)>();			

public GameObject Prefab;
给游戏物体进行代码绑定


禁用和启用GameObject游戏物体

GameObject组件

  • transform //每个游戏物体都有一个transform组件
  • tag //通过tag区分不同的游戏物体
  • activeInHierarchy //设置游戏物体是否处于激活状态
  • collider //碰撞器

		Debug.Log(属性);			//	输出属性值
		对象名.SetActive(false)		//	设置游戏物体处于未激活状态

GameObject、Component、Object

查找方法:

		类型名.对象名 = FindObjectOfType<类型名>();
		
		//查找Light类型的对象light
		Light light = FindObjectOfType<Light>();
		
		//设置未激活
		light.enabled = false;			
			
		//不查找未激活的游戏物体				
		Transform[] ts = FindObjectOfType<Transform>();
			
		//for循环输出游戏物体名	
		foreach(Transform t in ts)							
		{
				Debug.Log(t);			//for循环输出游戏物体名
		}
		Debug.Log ( light.name );		//输出游戏物体名字
		
		//游戏物体身上transform组件名
		Debug.Log ( go.GetComponent<Transform>().name ) ;

Find() 方法

  	方法一:Find
  	//通过物体名>查找,返回GameObject类型
  	GameObject go = GameObject.Find("Main Camera");	 
  	go.SetActive(false);		//设置游戏物体未激活
  	方法二:FindGameObjectWithTag
  	//根据标签查找,判断数组是否为空,数组长度是否大于0,
  	GameObject[] gos = GameObject.FindGameObjectsWithTag("MainCamera");	

  	gos[0].SetActive(false);
   	方法三:FindGameObjectWithTag
  	//通过标签查找 
  	GameObject go = GameObject.FindGameObjectWithTag("标签名");		

延时函数调用


// t秒后调用方法
Invoke("方法名",t);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值