标签: gameobject

从另一个GameObject的脚本设置转换

我正在尝试创建一个脚本来设置实例化时的对象.问题是,我不清楚如何做到这一点.我有这个功能..

function spawnPlayer()
{
    var CameraScript = GameObject.Find(PlayerPrefab.name).GetComponent("Camera Control");
    Network.Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity, 0);
}
Run Code Online (Sandbox Code Playgroud)

PlayerPrefab将成为将要实例化的预制件.当发生这种情况时,我需要在另一个GameObject上设置实例化的gameObject,这个GameObject是一个名为"Camera Control"的脚本,里面有一个我想要设置的变换Target.这该怎么做?

instantiation unity-game-engine unityscript gameobject

3
推荐指数
1
解决办法
3178
查看次数

创建游戏对象的副本

在 Unity3D 中如何通过单击鼠标创建对象的副本?

另外,如何在运行时选择要克隆的对象?(最好选择鼠标)。

runtime instantiation unity-game-engine mouseclick-event gameobject

2
推荐指数
1
解决办法
1万
查看次数

通过脚本隐藏/取消隐藏Unity3D中的对象

我希望在一切开始之前将我的场景的一部分设置为隐藏,所以让我说我有一些isHidden(我试图找到)属性,我设置为true之前,或在我的场景的第一帧.

在某些时候我想取消隐藏它并触发动画,我知道如何触发动画.我找到隐藏对象的唯一方法是设置它:

SetActive(false);
Run Code Online (Sandbox Code Playgroud)

它确实隐藏了,但是当我试图稍后在脚本中访问它时

GameObject.Find("gameObjectName");
Run Code Online (Sandbox Code Playgroud)

它返回null.那么,GameObject通过脚本隐藏或隐藏的正确方法是什么.这不是一个Mesh没有网格渲染器.

unity-game-engine gameobject

2
推荐指数
1
解决办法
2万
查看次数

Unity如何使GameObject Speed获得速度

我在Unity3D游戏中有一个Torpedo,我在Unity3D中制作了一个Torpedo,它有一个子弹的Torpedo火.我怎么能让鱼雷像鱼雷一样开火(开始真的很慢)然后获得很多动力和加速,就像在电影中一样.

下面是我如何做这个的代码,但它不能很好地工作.

    float torpedoSpeed = (0.00001f) * 155.2f;

   //move
    gameObject.transform.position += new Vector3(velocity, 0, 0) * 15.5f;
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine gameobject

2
推荐指数
1
解决办法
2839
查看次数

Unity中游戏对象的水平重力

我正在做一个简单的2D游戏.

我有gameobject一个rigidbody组件.

标准刚体重力拉下我的游戏对象,但我想重力将游戏对象拉到左边.

我知道如何在编辑 - >项目设置 - >中将重力设置为向左拉动...但是此设置会将重力更改为所有刚体,这在我的情况下是个问题.

我只想为1个游戏对象设置引力.

c# rigid-bodies unity-game-engine game-physics gameobject

2
推荐指数
1
解决办法
972
查看次数

团结| 查找具有指定父级的子游戏对象

我必须找到具有指定父级的子游戏对象。嗯。让我解释更多细节。我正在创建一个预制件,其中有一个名为“state”的子游戏对象,并且当我玩游戏时,父游戏对象的名称会发生​​更改。我的意思是子游戏对象的名称始终相同,但父游戏对象的名称完全不同。我如何知道哪一个孩子属于指定的父孩子。这并不像我想象的那么容易。这是我尝试过的下面的代码。

go = Instantiate(Resources.Load("Prefabs/User")) as GameObject;
go.transform.FindChild("State").gameObject.name = userIndex.ToString();
go.transform.FindChild(userIndex.ToString()).gameObject.SetActive(false);
Run Code Online (Sandbox Code Playgroud)

该代码无效,因为名称“state”等于 all。怎样修改才能更加清晰有效。请给我一些想法。


例如,创建的四个预制件的名称为“a”、“b”、“c”和“d”。所有游戏对象都有相同的子名称“状态”。我想知道的是如何找到“a”(父游戏对象)下的“状态”(子游戏对象)。我对统一功能不太了解。我该如何处理在所需父母下找到孩子的问题。

parent-child find unity-game-engine gameobject

2
推荐指数
1
解决办法
2万
查看次数

使 GameObject 在有限的时间内出现和消失

我试图让一个游戏对象在有限的时间内出现和消失(让我们暂时把时间函数放在一边)。

这是我得出的结论:

using UnityEngine;
using System.Collections;

public class Enemy1Behavior : MonoBehaviour
{
    // Use this for initialization
    void Start ()
    {
    }

    // Update is called once per frame
    void Update ()
    {
        this.gameObject.SetActive(false); // Making enemy 1 invisible
        Debug.Log("Update called");
        DisappearanceLogic(gameObject);
    }

    private static void DisappearanceLogic(GameObject gameObject)
    {
        int num = 0;
        while (num >= 0)
        {
            if (num % 2 == 0)
            {
                 gameObject.SetActive(false);
            }
            else
            {
                 gameObject.SetActive(true);
            }
            num++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我单击程序中的播放按钮时Unity没有响应,我只能使用End Task …

c# unity-game-engine gameobject

2
推荐指数
1
解决办法
2496
查看次数

使用vector3.MoveTowards移动对象

我正在使用Unity开发游戏应用程序。我在移动GameObject时遇到问题。

在我的游戏中,当玩家使用其设备向上滑动时,GameObject从点A移至B,而当他向下滑动时,游戏对象则从B移至A。

我用游戏逻辑编写了一个C#脚本,但是涉及到这个问题。

问题在于GameObject立即从A移动到B。

这是我用来移动GameObject的代码行:

transform.localPosition = Vector3.MoveTowards (PositionA,PositionB,Time.deltaTime * speed);
Run Code Online (Sandbox Code Playgroud)

speed 是一个值为10.0f的浮点数。

我希望我的GameObject缓慢移动以将A指向B。尽管速度值发生了变化,但没有任何变化,它仍然在瞬间移动。

我该如何解决?(我尝试Vector3.Lerp过,但结果相同)。

c# android device unity-game-engine gameobject

2
推荐指数
2
解决办法
5206
查看次数

在 Unity C# 中实例化游戏对象列表

如何使用 c# 在 Unity3D 中实例化 GameObject 列表?我在检查器窗口中用预制件手动填充列表。

在此处输入图片说明

下面是我在 Deck.cs 中编写的代码,但我得到“对象引用未设置为对象的实例”。如果你有一个数组的解决方案,那也将不胜感激。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEngine.UI;

namespace Assets
{
    class Deck:MonoBehaviour
    {
        public List<GameObject> deck;
        public void Fill()
        {
            GameObject c1 = Instantiate(deck[0]);
            GameObject c2 = Instantiate(deck[1]);
            GameObject c3 = Instantiate(deck[2]);
            GameObject c4 = Instantiate(deck[3]);
            GameObject c5 = Instantiate(deck[4]);
            GameObject c6 = Instantiate(deck[5]);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过用一个数组来做,我得到“你想实例化的对象是空的”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using UnityEngine.UI;

namespace Assets
{
    class Deck:MonoBehaviour …
Run Code Online (Sandbox Code Playgroud)

c# list unity-game-engine gameobject

2
推荐指数
1
解决办法
2万
查看次数

在统一中将预制件设置为另一个游戏对象的子对象

 public GameObject aiArrow;
 aiArrow.transform.parent = this.gameObject.transform;
Run Code Online (Sandbox Code Playgroud)

当我尝试将预制件设置为另一个对象的子对象时,会发生以下错误。

禁用设置驻留在预制资源中的变换的父级以防止数据损坏

如何将此“aiArrow”预制件设置为另一个游戏对象的子对象。

c# transform unity-game-engine gameobject prefab

2
推荐指数
1
解决办法
8086
查看次数