Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d中的错误代码c#oop在哪里_C#_Oop_Unity3d - Fatal编程技术网

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

Unity3d中的错误代码c#oop在哪里,c#,oop,unity3d,C#,Oop,Unity3d,现在我的项目中有两个班。 我想在类1中使用方法类2。 这个代码是c# 一级 public class controlBuilding : MonoBehaviour { ScaleModel cScale = new ScaleModel(); public void Start() { } public void Update() { cScale.touchScaleB1(); } public void

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

一级

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);
                }
            }
        }
    }
}
公共类ScaleModel:MonoBehavior
{
公共图书馆B1(
{
如果(Input.touchCount>=2)
{
触摸1=输入。触摸[0];
触摸2=输入。触摸[1];
如果(touch1.phase==TouchPhase.Moved | | touch2.phase==TouchPhase.Moved)
{
浮动夹持距离=矢量2.距离(触摸1.位置,触摸2.位置);
float prevDistance=矢量2.距离(触摸1.position-触摸1.deltaPosition,
touch2.position-touch2.deltaPosition);
浮动夹持距离Delta=夹持距离-前置距离;
如果(pinchDistanceDelta>0)
{
浮动因子;
mScaleFactor=b1_floor1dae.transform.localScale.x;
mScaleFactor+=0.0004f;
b1_floor1dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor2dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor3dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor4dae.transform.localScale=新矢量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floorTop.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_other.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
}
否则如果(pinchDistanceDelta<0)
{
浮动因子;
mScaleFactor=b1_floor1dae.transform.localScale.x;
mScaleFactor-=0.0004f;
b1_floor1dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor2dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor3dae.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floor4dae.transform.localScale=新矢量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_floorTop.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
b1_other.transform.localScale=新向量3(mScaleFactor,mScaleFactor,mScaleFactor);
}
}
}
}
}
为什么我触摸屏幕不是事件?哪里有错误的代码?

对不起,我英语不好


非常感谢您的回答。

如果您希望ScaleModel只是一个实用类: 不要从单一行为中继承它。因此,您可以使用“new”关键字作为常规类创建它


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

公共类控制建筑:单一行为
{
scalemodelscale;
公开作废开始()
{
cScale=GetComponent();
}
公共无效更新()
{
cScale.touchcaleb1();
}
公营机构
{
}
}

从MonoBehavior派生的类不应使用new实例化。而是使用。您是否尝试添加一些调试以验证问题是否为Input.Touchs?您看到的错误是什么?如果您需要帮助,您应该提供详细信息:)当我按下按钮进行缩放时,功能TouchCaleB1不起作用。但当我将TouchCaleB1中的代码放入“公共无效更新”时,它起作用了
public class controlBuilding : MonoBehaviour
{
    ScaleModel cScale;

    public void Start()
    {
        cScale = GetComponent<ScaleModel>();
    }

    public void Update()
    {
        cScale.touchScaleB1();
    }

    public void OnGUI()
    {

    }
}