Unity3d中的错误代码c#oop在哪里

本文关键字:c#oop 在哪里 错误代码 Unity3d | 更新日期: 2023-09-27 18:24:43

现在我的项目中有两个类
我想在类1中使用方法类2。
这个代码c#

1级

public class controlBuilding : MonoBehaviour
{
    ScaleModel cScale = new ScaleModel();
    public void Start()
    {
    }
    public void Update()
    {
        cScale.touchScaleB1();
    }
    public void OnGUI()
    {
    }
}

2级

public class ScaleModel : MonoBehaviour
{
    public void touchScaleB1()
    {
        if (Input.touchCount >= 2)
        {
            Touch touch1 = Input.touches[0];
            Touch touch2 = Input.touches[1];
            if (touch1.phase == TouchPhase.Moved || touch2.phase == TouchPhase.Moved)
            {
                float pinchDistance = Vector2.Distance(touch1.position, touch2.position);
                float prevDistance = Vector2.Distance(touch1.position - touch1.deltaPosition,
                                                       touch2.position - touch2.deltaPosition);
                float pinchDistanceDelta = pinchDistance - prevDistance;
                if (pinchDistanceDelta > 0)
                {
                    float mScaleFactor;
                    mScaleFactor = b1_floor1dae.transform.localScale.x;
                    mScaleFactor += 0.0004f;
                    b1_floor1dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor2dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor3dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor4dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floorTop.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_other.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                }
                else if (pinchDistanceDelta < 0)
                {
                    float mScaleFactor;
                    mScaleFactor = b1_floor1dae.transform.localScale.x;
                    mScaleFactor -= 0.0004f;
                    b1_floor1dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor2dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor3dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floor4dae.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_floorTop.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                    b1_other.transform.localScale = new Vector3(mScaleFactor, mScaleFactor, mScaleFactor);
                }
            }
        }
    }
}

为什么我触摸屏幕不是事件?哪里有错误的代码

对不起,我英语不好。

非常感谢您的回答。

Unity3d中的错误代码c#oop在哪里

如果您希望ScaleModel只是一个实用程序类:不要从MonoPhavior继承它。因此,您可以使用"new"关键字将其创建为常规类。

如果希望ScaleModel成为游戏对象组件:将你的两个脚本添加到同一个游戏对象中,然后像这样更改你的第一个类。。。(通过调用GetComponent,您正在同一游戏对象上搜索ScaleModel组件)

public class controlBuilding : MonoBehaviour
{
    ScaleModel cScale;
    public void Start()
    {
        cScale = GetComponent<ScaleModel>();
    }
    public void Update()
    {
        cScale.touchScaleB1();
    }
    public void OnGUI()
    {
    }
}