C# 为什么我能';如果我将另一个脚本的变量公开,是否不引用另一个脚本?
我试图将缩放脚本引用到ObjectsManipulation脚本中,以便使用缩放方法和属性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
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个问题。难道你不认为你可以自己找到答案吗?(像这个)