unity

Unity代码控制

CanvasGroup解决文本异色问题

https://blog.csdn.net/shirln/article/details/103540726

创建新物体(预制体)

//barrieraPrefab为平台预制体
GameObject aPrefab = Instantiate(barrieraPrefab) as GameObject;
aPrefab.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(Var.platform[Var.mapsNum]);
aPrefab.transform.position = new Vector3(transform.position.x, y, aPrefab.transform.position.z);
//obj为金币
//objpos[]为金币将要放置的位置
GameObject obj = Resources.Load<GameObject>("Prefab/obj");
for (int i = 0; i < objpos.Length; i++)
{
   
	GameObject temp = Instantiate(obj, objpos[i]);
	temp.GetComponent<ObjItem>().Init();
}
public void Init()
{
   
	sp = this.GetComponent<SpriteRenderer>();
	sp.sprite = Resources.Load<Sprite>("关卡界面/图层-15");
	Objisgold = true;
	this.gameObject.name = "jinbi";
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Destroy和DestroyImmediate

Destroy()有延迟
DestroyImmediate()立即销毁,但是消耗大

//销毁游戏物体
Destroy (gameObject);
//从游戏物体删除该脚本
Destroy (this);
//从游戏物体删除刚体
Destroy (rigidbody);
//加载物体5秒后销毁游戏物体
Destroy (gameObject, 5);

对象池

https://blog.csdn.net/shirln/article/details/87193673

点击屏幕控制移动的同时,增加暂停或返回等功能

https://blog.csdn.net/shirln/article/details/87272866

代码更改控件属性

更改精灵

image = GameObject.Find("Images").GetComponent<Image>();
image.sprite = Resources.Load<Sprite>("路径");
image.sprite = Resources.Load<Sprite>("images/1");
//等待几秒后跳转
public float countTime = 0f;
void Update(){
   
    CountTime();
}
void CountTime()
{
   
    countTime += Time.deltaTime;
    if (countTime > 5.0f)
    {
   
        SceneManager.LoadScene("场景名");
    }
}

点击事件与鼠标键盘操控

//按下事件,GetKeyDown
//抬起事件,Input.GetKeyUp
//长按事件,Input.GetKey
//任意键按下事件,Input.anyKeyDown
//鼠标按下事件,Input.GetMouseButtonDown ();//0为左边,1位右边,2位中间
//Input.mousePosition //得到鼠标当前三维坐标<br>          
//鼠标抬起  Input.GetMouseButtonUp
Input.GetKey(KeyCode.W);//点击键盘W触发
Input.GetMouseButtonDown(0);//单击鼠标左键触发
//自定义按钮的点击事件
if(Input.GetButtonDown("gamestart")){
   
	Debug.Log ("按钮被按下");
	Debug.Log (Input.mousePosition.x);//获取鼠标在游戏世界位置的x坐标
	Debug.Log (Screen.width);//获取屏幕的尺寸
}
Vector3 screenPosition;//将物体从世界坐标转换为屏幕坐标
Vector3 mousePositionOnScreen;//获取到点击屏幕的屏幕坐标
Vector3 mousePositionInWorld;//将点击屏幕的屏幕坐标转换为世界坐标
if(Input.GetMouseButtonDown(0)){
   
    //获取鼠标在相机中(世界中)的位置,转换为屏幕坐标;
    screenPosition = Camera.main.WorldToScreenPoint(transform.position);
    //获取鼠标在场景中坐标
    mousePositionOnScreen = Input.mousePosition;
    //让场景中的Z=鼠标坐标的Z
    mousePositionOnScreen.z = screenPosition.z;
    //将相机中的坐标转化为世界坐标
    mousePositionInWorld = Camera.main.ScreenToWorldPoint(mousePositionOnScreen);
    //物体跟随鼠标移动
    //transform.position = mousePositionInWorld;
    //物体跟随鼠标X轴移动
    transform.position = new Vector3(mousePositionInWorld.x,transform.position.y,transform.position.z);
}

更换图

//材质球贴图
this.GetComponent<MeshRenderer>().material.mainTexture = Resources.Load<Texture>("路径");
//UI控件
this.GetComponent<Image>().sprite = Resources.Load<Sprite>("路径");
//对象贴图
this.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("路径");

刚体碰撞

刚体碰撞后
OnTriggerEnter2D()/OnCollisionEnter2D()—>触碰即触发函数
OnTriggerStay2D()/OnCollisionStay2D()—>一直触碰触发函数
OnTriggerExit2D()/OnCollisionExit2D()—>分离才触发函数

//1.新建一个空对象,然后Add Component-->Box Collider 2D,勾选Is Trigger(这就会成为触发器,否则为碰撞),更改合适的尺寸
//2.新建一个脚本,代码如下,然后拖给对象
void OnTriggerEnter2D( Collider2D collidedObject )
{
   
    if (collidedObject.gameObject.tag == "pickup")
	{
   
		collidedObject.gameObject.SetActive(false);
	}       
}

改变图片大小与透明度

sp.color = new Color(0.1f, 0.2f, 0.3f, 1);//这种形式中 Color中的RGB的取值是范围是[0,1],A的取值也是[0,1]
sp.color = new Color32(123, 100, 50, 1);//这种形式中 Color中的RGB的取值是范围是[0,255],A的取值是[0,1]

改变图片锚点

因为不知道咋改图片对象的锚点,然后学习的时候突然发现,原来图片可以改变中心点【冷笑】【冷笑】
在这里插入图片描述
可以直接更改Pivot,也可以打开Sprite Editor更改
在这里插入图片描述

改变控件大小


var rt = gameObject.GetComponent<RectTransform>();  
rt.sizeDelta = new Vector2(100, 30); 

var rt = gameObject.GetComponent<RectTransform>();  
rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 100);  
rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 30);  

脚本来添加对象或获得对象、子对象

//在代码中创建新对象cude,是个立方体
//在代码中,获得了游戏中已存在的对象,此对象的Tag为feiji1
private GameObject feiji;
Image images;
v
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值