unity怎么设置脚本当运行项目时,场景中的cube放大一倍,位置像y轴正向移动一个?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity怎么设置脚本当运行项目时,场景中的cube放大一倍,位置像y轴正向移动一个?相关的知识,希望对你有一定的参考价值。

参考技术A public GameObject cube=你要放大的cube;
void Start()

cube.transform.localScale*=2;
cube.transform.position += gameObject.transform.up;

那个 你要放大的cube 你是通过代码去找 还是 手拖上去 随便 反正找到了就行

从 Unity 中的脚本中获取对按钮的引用

【中文标题】从 Unity 中的脚本中获取对按钮的引用【英文标题】:Get a reference to a button from script in Unity 【发布时间】:2016-09-22 07:44:02 【问题描述】:

脚本附加到不在场景中的预制件上。该按钮有它的标签。

我尝试在检查器中拖放按钮,但引擎不允许。我尝试通过标签找到它,但我得到一个异常“无法将 UnityEngine.GameObject 类型隐式转换为 UnityEngine.UI.Button”,并且当我进行转换时,我得到一个异常,我无法通过内置转换转换这些类型。 一些帮助? 如何获得对按钮的引用? 这是代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class TankShooting : MonoBehaviour 

    private Transform ShootingCameraTransform;
    private PlayerTankMovement playerTankMovement;
    public Button shootButton;


    // Use this for initialization
    void Start () 

        shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
        shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

        playerTankMovement = GetComponent<PlayerTankMovement> ();
        Transform t = transform;
        foreach (Transform tr in t)
        
            if (tr.tag == "ShootingCamera") 
            
                ShootingCameraTransform = tr.transform;
            
        
    

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

    

    public void OnShootButtonClick()
    
        Debug.Log ("Success");

    

【问题讨论】:

您好,既然您使用了this 解决方案,为什么不接受它作为答案? 我不确定它是否有效。我在引用按钮时遇到问题。如果它有效,我会接受它。是左边右边那个勾号吗?你能帮忙引用按钮吗? 是的,复选标记不是赞成或反对的图像。因此,如果您提出问题并且您得到的答案不起作用,请不要使用无效的答案创建新答案。相反,请在答案下方留下评论。我相信那些人愿意帮助你更多地回答你的问题。如果您忽略它们,然后在新问题中使用它们的代码,则意味着它们编写的代码解决了您的问题,而您现在遇到了新的不同问题。 感谢您的建议。我以后会用它 好的,那你有什么问题? 【参考方案1】:

看你的代码,还有一个问题:

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;

您不能像这样将 Component(Button) 转换为 GameObject。您必须使用 GetComponent 从 GameObject 中获取 Button 组件。

我无法在检查器中拖放按钮,当我找到它时 通过标签我不能将它从 GameObject 转换为 Button

那是因为你拖到 shootButton 槽的 GameObject 不是 Button 或者没有附加 Button 组件。它必须具有 Button 组件,您才能将其拖到 Button(shootButton ) 插槽。

您必须创建一个 Button,然后将该 Button 拖到 shootButton 插槽。

您可以先移除

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

然后将Button拖到shootButton插槽:

从脚本中获取参考:

如果您想从脚本中执行此操作,请替换

shootButton = GameObject.FindGameObjectWithTag ("ShootButton") as Button;
shootButton.onClick.AddListener ((UnityEngine.Events.UnityAction)this.OnShootButtonClick);

shootButton = GameObject.FindGameObjectWithTag("ShootButton").GetComponent<Button>();
shootButton.onClick.AddListener(() => OnShootButtonClick());

【讨论】:

我已经附加了按钮组件,但它仍然无法正常工作 你做错了什么。如果您仍然无法将其拖动到插槽中,请发布您拖动位置的屏幕截图。再张贴您拖入插槽的 GameObject 的屏幕截图,并向我们展示附加了哪些组件。另外,除非您的问题得到解决,否则不要接受答案。 问题已解决 我使用了 shootButton = GameObject.FindGameObjectWithTag("ShootButton").GetComponent 您无法通过引用转换将类型“UnityEngine.GameObject”转换为“UnityEngine.UI.Button”。

以上是关于unity怎么设置脚本当运行项目时,场景中的cube放大一倍,位置像y轴正向移动一个?的主要内容,如果未能解决你的问题,请参考以下文章

当对象在运行时实例化时,如何使 Unity UI 对象可拖动?

cocos游戏脚本怎么使用

Unity架构之详解域重新加载和场景重新加载

unity中常用脚本生命周期全解

unity发布到安卓平台后运行效果和pc端不同

[ExecuteInEditMode]