2017-10-12 85 views
0

我正在尝试使用Unity和C#来制作第一人称游戏。使用我自己创建的脚本之一,我试图访问股票“FirstPersonController”中的运行速度和行走速度变量。防护等级制作变量无法访问

我已经改变了所需的变量公开,我甚至可以看到它们在属性检查器窗口,但我自己的脚本是无法访问他们,以下错误:

1)无法访问变量运行和步行速度。

Assets/PlayerVitals.cs(134,30): error CS0122: `UnityStandardAssets.Characters.FirstPerson.FirstPersonController.m_RunSpeed' is inaccessible due to its protection level 

2)无法访问变量我加入FirstPersonController,声称它不存在(尽管它显示在Unity属性检查器 - 截图附后)

Assets/PlayerVitals.cs(134,60): error CS1061: Type `UnityStandardAssets.Characters.FirstPerson.FirstPersonController' does not contain a definition for `m_NormRunSpeed' and no extension method `m_NormRunSpeed' of type `UnityStandardAssets.Characters.FirstPerson.FirstPersonController' could be found. Are you missing an assembly reference? 

以下是有关两个代码的一部分:

FirstPersonController.cs:

namespace UnityStandardAssets.Characters.FirstPerson 
{ 
    [RequireComponent(typeof (CharacterController))] 
    [RequireComponent(typeof (AudioSource))] 
    public class FirstPersonController : MonoBehaviour 
    { 
     [SerializeField] private bool m_IsWalking; 
     [SerializeField] public float m_WalkSpeed; 
     [SerializeField] public float m_RunSpeed; 
     [SerializeField] public float m_NormRunSpeed; 

个PlayerVitals.cs:

using UnityStandardAssets.Characters.FirstPerson; 

public class PlayerVitals : MonoBehaviour { 
public FirstPersonController playerController; 
playerController = GetComponent<FirstPersonController>(); 
. 
. 
currentSpeed = playerController.m_RunSpeed; 

Property Inspector

+1

我想你是在你的项目中以某种方式引用包含这些类的程序集的错误版本(一个旧版本?发行版本?等)。我会检查路径。此外,通常我会自动实现这样的东西。 –

+0

也想到:我必须重新启动Visual Studio以前的编译器错误像这样。有时它只是需要它。 –

+0

错误的版本是我的想法....我怎么能够检查,虽然?我将它从资产文件夹中直接拖入游戏区域,并开始在那里进行编辑。在Hierarchy视图中双击它只会将我链接回相同的脚本。我也可以看到在Unity本身的脚本预览中的公共变化.. 也重新启动Unity,Visual Studio和我的电脑几次:( –

回答

0

实测值的误差。我做了一个FirstPersonController的备份副本,甚至重命名了它,但不知何故它导致了这个问题(即使它完全在不同的目录中)。删除它解决了这个问题!

+0

如果它仍在资产文件夹中,Unity仍然可以看到并编译它,改变文件名不会有任何影响,因为它仍然会有相同的* Class标识符* – Draco18s

+0

我明白了,我从来没有想过,谢谢! –