Unity学习日记(1)

Unity在一个类中调用另一个类的的变量以及变量值的方法:

一、在第一个类里创建一个public属性的变量或者方法,在另一个类中创建这个类的对象然后点这些方法和变量就可以获得这些变量的值或者使用这些方法。

第一个类:定义变量:
public class Detector : MonoBehaviour
    {
        public bool isDetect = false;
第二个类:调用变量:
public class WorkPiece : MonoBehaviour
	{
        public Detector detector;        

在调用该变量或方法的类中声明第一个类需要让这个类是public,并在Unity中将使用第一个类的组件拖到后面调用的类上
Unity学习日记(1)_第1张图片

二、Unity射线方法

Physics.Raycast(
    Vector3 origin, 
    Vector3 direction, 
    float maxDistance = Mathf.Infinity, 
    int layerMask = DefaultRaycastLayers, 
    QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
    
    origin 射线在世界坐标中的起点
    direction 射线的方向
    maxDistance 射线应检查碰撞的最大距离
    layerMask 一种 Layer mask,用于在投射射线时有选择地忽略碰撞体
    queryTriggerInteraction 指定此查询是否应触发触发器

例:if (Physics.Raycast(transform.position, Vector3.forward, out hit, Mathf.Infinity))

三、某方法在Update里只执行一次
对需要执行的方法在Update里添加一个判定条件如isPause=true,在执行了这个方法并且不希望再次执行的时候
改变isPause=false,就不会在执行该方法。

private bool isPause = false;
        private void Update()
        {
            if (!isPause)
            {
                Raydetect();
                
            }

        }
        
         private void Raydetect()
        {
            if (Physics.Raycast(transform.position, Vector3.forward, out hit, Mathf.Infinity))
            //if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
            {
                isDetect = true;
                
                Timer(2);
            }
            
          
            // return isDetect;
        }
       //

Timer方法用来进行时延,i代表延迟

        private void Timer(int i)
        {
            //累加每帧消耗时间
            totalTime += Time.deltaTime;

            //暂停i秒
            if (totalTime >= i)
            {
                totalTime = 0;//清空累加的时间
                isDetect = false;
                isPause = true;
            }
            
        }

你可能感兴趣的:(unity,游戏引擎)