UI和3d物体的关系

2021-04-29 18:56发布

请问在使用ui时,我们第一次将ui加入场景中,怎么将ui和3d物体间接起来?

请问在使用ui时,我们第一次将ui加入场景中,怎么将ui和3d物体间接起来?

5条回答

1、二者是不同的概念,UI是用户交互,3D物体指的是场景中的3D模型。

2、UI要通过画布才可以显示出来,3D物体可以直接在场景中显示;

3、可以把画布的渲染模式改成WorldSpace,UI也会成为场景中的3D物体;

4、可以通过UI控件来控制场景中的3D物体。

小狮子
3楼 · 2021-05-07 11:03

UI是始终显示在屏幕上的,3d物体会随着场景的变化而变化,可以联系到一起,也可以把UI当做3D物体用

722
4楼 · 2021-05-10 14:12

传统使用OnMouseDown回调会同时响应UI与3D物体事件,可使3D物体继承IPointerClickHandler实现OnPointerClick方法避免穿透(使用此方法需要在摄像机上挂Physics Raycaster脚本)


public class ModelClickEvent : MonoBehaviour,IPointerClickHandler

{

    public void OnPointerClick(PointerEventData eventData)

    {

        Debug.Log("Click " + gameObject.name);

    }

}


1

2

3

4

5

6

7

8

若此时需要穿透,则可以在UI上这样写来穿透


public class UIClickMessenger : MonoBehaviour,IPointerClickHandler

{

    

    

    public void OnPointerClick(PointerEventData eventData)

    {

        Debug.Log("Click "+gameObject.name);

        List results = new List();

        EventSystem.current.RaycastAll(eventData, results);

        

        foreach (var result in results)

        {

            Debug.Log("raycast:" + result.gameObject.name);

            if (!gameObject.Equals(result.gameObject))

            {

                ExecuteEvents.Execute(result.gameObject, eventData, ExecuteEvents.pointerClickHandler);

            }

            

        }

    }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

识别当前点击点为UI区域还是非UI区域

GraphicRaycaster _raycaster;

    private void Start()

    {

        _raycaster = FindObjectOfType();

    }

bool isUI()

    {

        PointerEventData point = new PointerEventData(EventSystem.current);

        point.position = Input.mousePosition;

        point.pressPosition = Input.mousePosition;

        List result = new List();

        _raycaster.Raycast(point, result);

        return result.Count > 0;

    }

————————————————


蜗牛
5楼 · 2021-05-21 09:31

UI:user interface  用户界面的意思,一般是2D的界面,3D指的是3D模型

UI需要通过Canvas进行展示,而3D物体不一样,并且UI有时需要转化为2D Sprite

游戏中的游戏界面.录入登录界面,人物头像,血条,技能栏,商场背包等都可以看做是UI

UI也是可以放置到3D世界当中的,例如人物血条

Transform
6楼 · 2021-08-09 09:29

正常的UI是2D平面的,就像我们玩游戏的时候,弹出的游戏界面,他是单独的系统。

3D物体是模型之类的可以进行动态效果动作模拟的,点击按钮发生一些事件,这些是写在UI组件上的功能。

是需要代码编写的~

相关问题推荐

  • 回答 5

    第一种方法:通过点击场景文件打开Unity游戏工程找到Unity游戏工程所在的目录,我这里的工程放在在E盘根路径的Unity_workspace文件夹中。注意:unity软件不支持中文路径,所以不要把工程放在中文文件夹下。我们在这里就打开New Unity Project 4工程,进入到Ne...

  • 回答 13
    已采纳

    如果是学习研究的话,当然是体验官方的最新版本。要是项目开发的话,还是要选择长期稳定版本,也就是大版本的LTS。比如2017.4或者是2018.4都是LTS版本,至于后面的小版本可以去看下更新的内容来做选择吧!...

  • 回答 9

    unity3D是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC...

  • 回答 11

    1、Unity3D:如果你需要开发大型游戏,或需要开发3D游戏的,请选这个。2、Cocos2D-x:如果你开发的是中小型游戏,对安装包大小比较在意的,请选这个。3、Andengine、Cocos2D-iPhone:如果你只为开发单平台游戏,又非常在意速度和安装包大小,请选这个。最后。...

  • 回答 11

    首先在场景中调整好你要观看的视角选择摄像机,按下Ctrl+Shift+F或者菜单栏->GameObject->Align with view在不行的话,可以调整摄像机的Position 和 Rotation

  • 回答 5

    将MeshRender组件移除即可:

  • 回答 9

    1.在Asset store里选择一个skybox。 2.从素材库中选择一个人物角色,也可以自己建模或者在其他软件中做好再导进来。 3.想好角色如何运动,然后用自己比较熟悉的语言编写来作展示,这段代码可以实现当你按下键盘上的A/D/S/W的按键时,角色会向前后左右四个方向的...

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • 回答 4

    xcel 表的操作少不了要引入第三方库,首先我们需要引入 Excel.dll 和 ICSharpCode.SharpZipLib.dll,这两个类库在网上都能找到;然后我们还需要引入 System.Data.dll,这个类库在 Unity3D 的安装路径下的 Editor\Data\Mono\lib\mono\unity 文件夹下能找到...

  • 回答 1

    需要添加如下引用: System.Configuration System.Data System.EnterpriseServices System.Security System.XML using UnityEngine; using System.Collections; using System;  using  System.Data;  using System.Data...

  • 物理引擎问题2021-06-15 17:35
    回答 4

    物理引擎则使用动量、扭矩等用高等数学手段来模拟真实物体,这将得到更真实的效果且使我们的编码更加容易。

  • 回答 1

    不能这样表述,三维通常是立体的空间,二维则是平面的。数学中通常是Oxyz表示空间直角坐标系,Oxy表示表示的是平面直角坐标系,你可以说空间直角坐标系中去掉Z轴可以转换为二维,因为去掉X或Y轴都能转换为二维。...

  • 回答 2

    GameObject.renderer.enabled//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的GameObject.Destroy()//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放,而是等到这...

  • Canvas三种渲染模式2021-04-29 19:50
    回答 10

    一:Overlay—覆盖模式类似于手机贴膜,所有UI都会显示在场景中2D,3D物体的上层在同一个Canvas下可以调整Canvas子物体的先后顺序,层级面板中越靠上则先被渲染多个Canvas下可以调整Canvas组件的Sort Order属性调整渲染顺序,数值越小的画布越先被渲染:Camer...

  • Unity引擎2021-04-29 19:47
    回答 4

    不得不说,Unity3d是个解放生产力的游戏引擎,自带了各种编辑器,可以进行一系列的可视化操作。需要注意的是,unity3d适合FPS游戏,物理游戏等中小型的游戏,并不太适合MMO开发。unity3d难学吗?如何学习unity3d呢?在学习之前又应该了解哪些内容呢?代码写不...

  • 回答 3

    不是人工检查的,如果你的问题里面有敏感关键字,是发不出去的,现在国内所有的网站在发布文章时都要进行检查的,所以你在发之前先检查一下看问题里面是否有违禁词语。

没有解决我的问题,去提问