2017-12-28 21 views
0

Scalingメソッドとプロパティを使用できるように、Scalingスクリプトを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; 
     } 
    } 
} 

スクリプトObjectsManipulationはゲームオブジェクトに取り付けられています。 しかし、オブジェクトマニピュレーションのインスペクタのエディタでは、スケーリングスクリプトを追加することはできません。スケーリングスクリプトはスケーリングをドラッグしようとしましたが、できません。

+0

スケーリングにはフィールドがなく、プロパティはありません。私はそれがUnityの問題であるかどうかはわかりませんが、ほとんどのものはプロパティが必要です。 – Crowcoder

+1

あなたは40日間StackOverflowのメンバーであり、既に36の質問をしています。あなた自身で答えを見つけられたと思いませんか? (このように) – Hellium

答えて

1

Scaling現在、MonoBehaviourに拡張されています。ゲームオブジェクトに添付する必要があります。フィールドがないクラス自体への参照のために、そのクラスのインスタンスためのものですので、

あなたは直接インスペクタのフィールドにスクリプトをドラッグすることはできません。

あなたはどちらかに必要があります。それはコンポーネントではありませんように

  1. フィールドに割り当てる、どこかObjectsManipulationnew Scaling()を呼び出し、その後、スケーリングクラスから: MonoBehaviourを削除します。

  2. Scalingスクリプトをゲームオブジェクトに添付し、GetComponent<Scaling>()を使用してフィールドへの参照を割り当てます。

関連する問題