gpt4 book ai didi

c# - Unity,为什么在 c# 脚本中使用 var 动画时某些属性不存在?

转载 作者:行者123 更新时间:2023-11-30 15:21:01 28 4
gpt4 key购买 nike

我想做的是自动让角色走到一个特定的位置,或者只是走到一个特定的方向。

using UnityEngine;
using System.Collections;

public class Ai : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

var v = Input.GetAxis("Vertical");
if(Mathf.Abs(v) > 0.1f) {
animation["Walk"].speed = v;
animation.CrossFade("Walk");
transform.position.z += v;
}
else animation.CrossFade("Idle");
}
}

速度和 CrossFade 不存在。

更新我的尝试:

using UnityEngine;
using System.Collections;

public class Ai : MonoBehaviour {

Animation animation;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

var v = Input.GetAxis("Vertical");
if(Mathf.Abs(v) > 0.1f) {
animation["Walk"].speed = v;
animation.CrossFade ("Walk");
transform.position.z += v;
}
else animation.CrossFade("Idle");


}
}

使Animation的动画全局变量。现在动画具有属性 speed 和 CrossFade 但现在我收到一个新的警告和一个新的错误:

警告在线:

Animation animation;

Ai.animation'隐藏继承成员UnityEngine.Component.animation'。如果打算隐藏,请使用 new 关键字

而且错误就在线上:

transform.position.z += v;

无法修改“UnityEngine.Transform.position”的值类型返回值。考虑将值存储在临时变量中

最佳答案

因为 var 代表匿名类型。它们只会在编译时解析。

正如 Pieter Witvoet 在评论中提到的,通常情况下,智能感知对于隐式类型变量应该没有问题。

但在您的情况下,您重叠了两个属性,所以现在 IDE 变得困惑了。

所以现在您的智能感知不会判断您的对象是哪个类。

只需将 var animation 替换为 Animation animation,您的智能感知就会提供所有缺失的功能和属性。

https://msdn.microsoft.com/en-us/library/bb397696.aspx


第二个问题:

transform.position.z += new Vector3(0,0,v); 

x、y 和 z 的 Vector3 属性都是只读的。

关于c# - Unity,为什么在 c# 脚本中使用 var 动画时某些属性不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563441/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com