[英]How can I fix the errors transform not exist?
using UnityEngine;
using System.Collections;
public class MakeTwoPoints3D : MonoBehaviour {
public GameObject cylinderPrefab;
// Use this for initialization
void Start () {
CreateCylinderBetweenPoints(Vector3.zero, new Vector3(10, 10, 10), 0.5f);
}
void CreateCylinderBetweenPoints(Vector3 start, Vector3 end, float width)
{
var offset = end - start;
var scale = new Vector3(width, offset.magnitude / 2.0f, width);
var position = start + (offset / 2.0f);
Object cylinder = Instantiate(cylinderPrefab, position, Quaternion.identity);
cylinder.transform.up = offset;
cylinder.transform.localScale = scale;
}
// Update is called once per frame
void Update () {
}
}
On both lines same error: 在两行上出现相同的错误:
cylinder.transform.up = offset;
cylinder.transform.localScale = scale;
Severity Code Description Project File Line Suppression State Error CS1061 'Object' does not contain a definition for 'transform' and no extension method 'transform' accepting a first argument of type 'Object' could be found (are you missing a using directive or an assembly reference?) MakeTwoPoints3D.cs 23 Active 严重性代码说明项目文件行抑制状态错误CS1061“对象”不包含“变换”的定义,并且找不到找到接受类型为“对象”的第一个参数的扩展方法“变换”(您是否缺少using指令或程序集引用?)MakeTwoPoints3D.cs 23有效
Object
is parent class of GameObject
and GameObject
as member of type Transform
. Object
是GameObject
父类,并且GameObject
是Transform
类型的成员。 If you try to access transform
from an instance of Object
class, it will show you following error: 如果尝试从Object
类的实例访问transform
,它将显示以下错误:
Object' does not contain a definition for 'transform' 对象”不包含“变换”的定义
So accurate way of instantiating and using the resulted object as a GameObject is as Quantic said in comment : 如此精确的实例化和将结果对象用作GameObject的方法,正如Quantic在评论中所说:
GameObject cylinder = Instantiate(cylinderPrefab, position, Quaternion.identity) as GameObject;
OR 要么
GameObject cylinder = (GameObject) Instantiate(cylinderPrefab, position, Quaternion.identity);
It is always to use null-check for safety before using the component in case of other types than GameObject. 对于非GameObject的其他类型,在使用组件之前始终应使用null检查以确保安全。 For example: 例如:
Rigidbody rb = Instantiate(somePrefab) as Rigidbody;
if(rb != null)
// use it here
hope this helps. 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.