Unity脚本之间的交互

Unity Mar 2, 2018 ~

前言

脚本挂载到物体上就成为了类似RigBody和Material这种组件,所以也是可以在其他脚本中调用的;

本文也搭配有视频演示(文章末尾)

开工

1.首先规划一下要实现的功能和思路,比如实现角色的生命值和UI上的血条进行同步的效果

2.新建一个名为Playe的胶囊体,添加RigBody组件和创建一个名为PlayerS的C#脚本,具体看下图或演示视频

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerS : MonoBehaviour {

    public float health = 100;      // 角色健康值
    public float speed = 5;         // 角色移动速度
    private Rigidbody rig;

	// Use this for initialization
	void Start () {
        rig = GetComponent<Rigidbody> ();
	}
	
	// Update is called once per frame
	void Update () {
        rig.velocity = new Vector3(Input.GetAxis("Horizontal")*speed, 0, Input.GetAxis("Vertical")*speed);
	}

    // 添加碰撞检测
    void OnCollisionEnter(Collision col)
    {
        if(col.gameObject.name == "Hurt")
        {
            // 当Player每碰撞一次Hurt的时候,将它的健康值减百分之10;
            if(health > 0)
            {
                health -= 10;
            }
            print("Health = " + health);
        }
    }
}

3.再建一个名为Hurt的Cube物体,不做任何组件和属性的修改

4.到目前为止就实现了下面的GIF图一样的效果,Player每碰撞一次Hurt就会减百分之10的健康值(health)

5.现在再来创建一个Text UI,添加一个名为HealthUI的C#脚本,UI的属性设置看自己习惯

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class HealthUI : MonoBehaviour {

    private GameObject player;      // 定义角色
    private PlayerS PlayerS;        // 角色上挂载的脚本
    private float getHealth;        // 定义角色的健康值
    private Text text;      // text UI

	// Use this for initialization
	void Start () {
        player = GameObject.Find("Player");     // 获取角色
        PlayerS = player.GetComponent<PlayerS>();   // 获取角色上的脚本
        text = GetComponent<Text>();        // UI组件
	}
	
	// Update is called once per frame
	void Update () {
        getHealth = PlayerS.health;     // 获取角色健康值
        text.text = getHealth.ToString("0");        // 将 Text UI的值改为角色的健康值
	}
}

6.完工,洗洗睡了!!!

视频

https://www.bilibili.com/video/av20244956/

Tags

Weic Ma

没有什么事是一个脑瓜子解决不了的,要是不行就Remove掉你的脑瓜子吧!

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.