首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unity无法将GameObject强制转换为我的对象

Unity无法将GameObject强制转换为我的对象
EN

Stack Overflow用户
提问于 2019-02-16 22:34:16
回答 1查看 2.7K关注 0票数 0

我正在写一个简单的棋盘游戏使用unity。我需要设置我的对象(Player)的属性,尽管我将其引用为GameObject。我需要选角,但不能。以下是我尝试过的方法

代码语言:javascript
运行
复制
public GameObject PlayerPrefab;

private GameObject player;

// Use this for initialization
void Start () {
    if (!isLocalPlayer)
    {
        return;
    }
    Debug.Log("Spawning.");
    CmdSpawn();
}


[Command]
void CmdSpawn()
{
    player = Instantiate(PlayerPrefab);
    ((Player)player).parentNetId = this.netId;
    NetworkServer.SpawnWithClientAuthority(player, connectionToClient);
}

我有以下错误:"Assets/Scripts/PlayerConnectionObject.cs(27,18):error CS0030: Cannot convert type UnityEngine.GameObject' toPlayer'“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 01:53:17

播放器是附加到你的PlayerPrefab上的组件,你应该使用GetComponent<>。还可以使用can存储缓存的PlayerComponent,这是GetComponent运行速度缓慢的原因:

更改字段:

代码语言:javascript
运行
复制
private Player player;

和内部命令:

代码语言:javascript
运行
复制
player = Instantiate(PlayerPrefab).GetComponent<Player>();
player.parentNetId = this.netId;
NetworkServer.SpawnWithClientAuthority(player.gameObject, connectionToClient);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54724144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档