2019-01-02 15:51:58 kybshj 阅读数 4328

在Unity开发游戏的时候,为了有一个更快更方便的工作流,我们往往会在Editor下开发一些方便实用的工具。在工具中,用到最多,最关键的就是按钮,它是工具的首席执行官。下面就用最简单的代码来演示添加一个自定义按钮到Inspector当中。

案例:指定坐标后克隆新物体到场景。

1、 在Unity Assets下创建”ObjectBuilderScript”脚本,添加代码:

using UnityEngine;

public class ObjectBuilderScript : MonoBehaviour {
    public GameObject obj;
    public Vector3 spawnPoint;

    public void BuildObject() {
        Instantiate(obj, spawnPoint, Quaternion.identity);
    }
}

2、 在Unity Assets下创建”Editor”文件夹,文件夹下创建”ObjectBuilderEditor”脚本,添加代码:

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(ObjectBuilderScript))]
public class ObjectBuilderEditor : Editor {
    public override void OnInspectorGUI() {
        DrawDefaultInspector();

        ObjectBuilderScript myScript = (ObjectBuilderScript)target;
        if(GUILayout.Button("创建对象")) {
            myScript.BuildObject();
        }
    }
}

3、 场景中添加一个空的GameObject对象,挂载上” ObjectBuilderScript”脚本,在Inspector中选中需要克隆的游戏对象,填入克隆对象的出生点坐标,点击“创建对象”按钮,就将克隆对象添加到场景当中。如图:
在这里插入图片描述

更多Unity相关技术学习交流推荐Paws3D学习中心:https://www.paws3d.com/learn/
活跃的Unity技术交流qq群:935714213

2018-08-18 23:43:49 weixin_42915787 阅读数 11212

今天来分享一个Unity3D的简单的点击按钮跳转界面的实现

  1. 第一步,新建两个场景,名字随意。这里就叫one和two。
    我们是要实现在one场景之中点击一个按钮来跳转到two场景当中
    自然要在one场景之中添加一个Button。同时我们在Assets之中新建一个脚本C# Script
    (这些unity的基本操作不细讲)
    这里写图片描述
  2. 第二步,File–Build setting…
    这里写图片描述
  3. 第三步,编写如下代码(代码还是自己敲好一些)
    这里写图片描述
  4. 第四步,将脚本拖到Canvas之中(也可拖到Main Cameron)
    这样Canvas的Inspector中就有了sss(script)
    这里写图片描述

  5. 关键步骤,先点击Button,然后再Button的Inspector下的Button(script)进行如下操作。第3这里,先选择sss,再选择OnLoginButtonClick就可以啦。
    这里写图片描述

  6. 到此就可以实现在one场景之中点击Button切换到two场景之中了。

2018-10-27 10:34:42 dange4 阅读数 2433

实践中记录以便后续查阅。

1、 将.mp3文件拷贝到项目的ASSET文件夹中。在unity3d—>Asset,会看到处理后的音频文件。在模型上添加Audio Source组件,在相机上添加Audio Listener组件。(具体步骤百度)

2、在按钮点击响应事件中写入相应的动作

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class AddNewButton : MonoBehaviour 
{
    
    public bool WindowShow = false;   
    public bool isdown = false;     
    private AudioSource _audioSource = null;

    void Start()
    {
        isShowTip = false;
    }
    
    void OnGUI()
    {
        if (WindowShow)
        {
            

            //监听按钮点击事件
            if (GUI.Button(new Rect(450, 100, 400, 180), "查看详情"))
            {
                isdown = true;
            }
            if(isdown)
            {
               
                //添加 Audio Source 组件
                _audioSource = this.gameObject.AddComponent<AudioSource>();
                //加载 Audio Clip 对象
                AudioClip audioClip = Resources.Load<AudioClip>("sound1");
                //播放声音
                _audioSource.loop = true;
                _audioSource.clip = audioClip;
                _audioSource.Play(0);
            }
        }
    }

    //鼠标点击事件
    void OnMouseDown()
    {
        Debug.Log("show");
        if (WindowShow)
        {
            
            WindowShow = false;
        }
        else
            WindowShow = true;
    }
    
}

3、以上运行可能会出现两个问题:一个是还没有按下按钮就开始自动播放,那么可以在添加组件的模型下,将play on awake 取消勾选。如图:

其它设置自行查阅文档。https://blog.csdn.net/fansongy/article/details/51759563

另一个是取消以后就无法播放,那是因为路径问题。如下:

//加载 Audio Clip 对象
AudioClip audioClip = Resources.Load<AudioClip>("sound1");

必须将你AudioClip(也就是将.mp3文件添加到Asset文件夹后自动生成的AudioClip)拖放到Resources文件下才可以。、

4、暂停等其它操作参考https://docs.unity3d.com/ScriptReference/AudioSource.html

2017-10-25 09:58:42 nicepainkiller 阅读数 1039

其中stateText 为Text 当然也可以是 Image 等等UGUI的 组件

onTextClick 为方法的回调



            EventTrigger trigger        = stateText.gameObject.GetComponentEx<EventTrigger>();
            trigger.triggers            = new System.Collections.Generic.List<EventTrigger.Entry>();

            EventTrigger.Entry entry    = new EventTrigger.Entry();
            entry.eventID               = EventTriggerType.PointerClick;
            entry.callback              = new EventTrigger.TriggerEvent();

            entry.callback.AddListener(OnTextClick);
            trigger.triggers.Add(entry);


2014-10-10 14:59:28 u014067842 阅读数 2247

unity3d 4.3后添加了很多2D控件,这就大大方便UI的制作,恰好NGUI不能做到对2D不规则按钮的检测,只能用UGUI了

把图片改成Sprite  

然后把material放到sprite指定位置

用按钮图片做一个Material


附加在按钮上的脚本里面

using UnityEngine;
using System.Collections;

public class Button : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}

    void OnMouseDown()
    {
        Debug.Log("hei");
    }
}

这样点击图片就会打印hei

如果你同时使用NGUI做UI肯能会出现按钮无法显示,或无法触发的情况。这时你可以再创建一个相机让该相机与按钮处于相同的layer层,

通过调整相机参数是按钮正常显示,此时不规则按钮就可以正常使用了。   欢迎留言讨论

没有更多推荐了,返回首页