C# 为什么我能';如果我将另一个脚本的变量公开,是否不引用另一个脚本?

C# 为什么我能';如果我将另一个脚本的变量公开,是否不引用另一个脚本?,c#,unity3d,unity5,C#,Unity3d,Unity5,我试图将缩放脚本引用到ObjectsManipulation脚本中,以便使用缩放方法和属性 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectsManipulation : MonoBehaviour { public Scaling scaling; 以及缩放脚本: using System.Collections; using Syst

我试图将缩放脚本引用到ObjectsManipulation脚本中,以便使用缩放方法和属性

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

public class ObjectsManipulation : MonoBehaviour
{
    public Scaling scaling;
以及缩放脚本:

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

public class Scaling : MonoBehaviour
{
    public GameObject objectToScale;
    public float duration = 1f;
    public Vector3 minSize;
    public Vector3 maxSize;
    public bool scaleUp = false;
    public Coroutine scaleCoroutine;

    public void Inits()
    {
     objectToScale.transform.localScale = minSize;
    }

    public IEnumerator scaleOverTime(GameObject targetObj, Vector3 toScale, float duration)
    {
        float counter = 0;
        Vector3 startScaleSize = targetObj.transform.localScale;

        while (counter < duration)
        {
            counter += Time.deltaTime;
            targetObj.transform.localScale = Vector3.Lerp(startScaleSize, toScale, counter / duration);
            if (scaleUp)
            {
                var lookPos = transform.position - objectToScale.transform.position;
                lookPos.y = 0;
                var rotation = Quaternion.LookRotation(lookPos);
                objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
            }
            else
            {
                var lookPos = transform.position - objectToScale.transform.position;
                lookPos.y = 0;
                var rotation = Quaternion.LookRotation(Camera.main.transform.forward);
                objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
            }

            yield return null;
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共阶级规模:单一行为
{
公共游戏对象对象缩放;
公共浮动持续时间=1f;
公共矢量3分钟;
公共向量3最大大小;
公共bool scaleUp=false;
公共协同程序规模例程;
公共void Inits()
{
objectToScale.transform.localScale=minSize;
}
public IEnumerator scaleOverTime(游戏对象targetObj、矢量3到缩放、浮动持续时间)
{
浮点计数器=0;
Vector3 startScaleSize=targetObj.transform.localScale;
while(计数器<持续时间)
{
计数器+=时间增量时间;
targetObj.transform.localScale=Vector3.Lerp(开始缩放、toScale、计数器/持续时间);
if(scaleUp)
{
var lookPos=transform.position-objectToScale.transform.position;
lookPos.y=0;
变量旋转=四元数。LookRotation(lookPos);
objectToScale.transform.rotation=Quaternion.Slerp(objectToScale.transform.rotation,rotation,counter/duration);
}
其他的
{
var lookPos=transform.position-objectToScale.transform.position;
lookPos.y=0;
var rotation=Quaternion.LookRotation(Camera.main.transform.forward);
objectToScale.transform.rotation=Quaternion.Slerp(objectToScale.transform.rotation,rotation,counter/duration);
}
收益返回空;
}
}
}
脚本对象操纵附加到游戏对象。 但是在ObjectsManipulation检查器中的编辑器中,我无法添加缩放脚本,该脚本试图将缩放拖动到其中,但无法添加。

Scaling
当前扩展了
monobhavior
,这要求将其附加到游戏对象。 不能直接将脚本拖动到inspector字段,因为该字段用于该类的实例,而不是对该类本身的引用

您需要:

  • 从缩放类中删除
    :monobhavior
    ,使其不是一个组件,然后在
    ObjectsManipulation
    中的某个地方调用
    new Scaling()
    ,将其分配给字段

  • Scaling
    脚本附加到游戏对象上,并使用
    GetComponent()
    为该字段分配引用


  • 缩放没有属性,只有字段。我不知道这是否是Unity的问题,但大多数东西都需要属性。您已经成为StackOverflow的成员40天了,您已经问了36个问题。难道你不认为你可以自己找到答案吗?(像这个)