UnityWebGL 设置全屏
这是Unity导出Web默认打开的页面尺寸 修改后效果 修改 index.html 文件 1.div元素的id属性值为"unity-container",宽度和高度都设置为100%,意味着该div元素将占据整个父容器的空间。canvas元素的id属性值为"unity-canvas",宽度和高度都设置为auto,意味着该canvas元素将自适应父容器的大小。 修改如下所示: <div id="unity-c...
【Unity3D小技巧】Unity3D中UI控制解决方案
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在开发中总是会控制UI界面,如何优雅的控制UI界面是每一个Unity3D程序员的必修课。 这篇文章就总结了一下博主在实际开发中用到的几种控制UI的方式,分享出来以供批评指正。 在文章的最后,也根据UI控制做了一些延展,比如说: 控制UI顺序控制UI层级控制初始化的先后顺序显示隐藏的堆栈 二、正文 2-...
Unity游戏开发架构设计指南
前言 在Unity游戏开发中,合理的架构设计对于确保项目的可维护性和可扩展性至关重要。一个良好的架构能够帮助开发者更有效地组织代码,便于团队协作,同时也能够应对项目需求的变化。 初步理解游戏架构 游戏架构是指在游戏开发过程中,对各种组件(如数据管理、游戏逻辑、用户界面等)的组织和管理方式。一个好的架构设计应该能够使得各个组件高度解耦,便于单独开发和测试,同时也能够容易地进行修...
Unity UIBasePanel 简单的ui基类
简单的ui基类 UIBasePanel.cs using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;using System.Collections.Generic; namespace MYTOOL.UI{ public class UIBasePanel : MonoBehaviour { //通过里式转换原...
Unity 中的接口和继承
在Unity的游戏开发中,理解面向对象编程的概念,如类、接口、继承和多态性,是非常重要的。本文旨在帮助理解和掌握Unity中接口和继承的概念,以及如何在实际项目中应用这些知识。 类和继承 在C#和Unity中,类是构建应用程序的基本单位。类可以包含数据(字段)和行为(方法)。类之间的一种关系是继承,其中一个类(子类)可以继承另一个类(基类或父类)的成员。 举例说明: ...
(Unity) C# 中的as 关键字
前言 本文旨在向介绍 as 关键字,阐明其目的、用法以及特别适用的场景,帮助理解 as 关键字在安全类型转换中的用途。 什么是类型转换? 类型转换是指将对象从一种类型转换为另一种类型的过程。在 C# 中,当你想使用特定类型的方法或属性时,这通常是必要的,而这些方法或属性在其当前形式中可能不可用。 C# 中的 'as' 关键字 C# 中的 as 关键字用于安全类型转换。...
Unity——八叉树的原理与实现
八叉树节点的功能,包括分割、添加游戏对象和绘制节点的包围盒等操作。 using System.Collections;using System.Collections.Generic;using UnityEngine; public class OctreeNode{ Bounds nodeBounds; // 节点的包围盒 float minSize; // 最小节点大小 Bounds[] chi...
Unity3D Pico VR 手势识别物体交互 适配 MRTK3
当前Pico已经支持手势识别了,但是提供的PICO Unity Integration SDK 中是没有手势和物体交互的功能,Unity XR Interaction Toolkit提供的手势识别物体交互对 Quest适配的挺好的,Pico 当前只能用指尖点触还不能对物体进行抓握以及手势控制射线对物体进行交互。 如要项目想要使用Pico 手势识别物体交互的话,微软的MRTK3进行一些修改也在Pico 上使...
关于Unity插件TriLib使用的一点儿心得
最近做一个项目的时候,由于要求动态加载fbx或者glb等格式文件,而我们自己开发加载插件难度又有点大,所以最后使用了TriLib这个插件,现在说一点使用心得。 由于文件加载之后要对加载的内容进行复制,比如加载一个柱子,然后会把这个柱子复制很多份之类的,并且在复制之后需要删除原始的物体。刚开始的时候发现一旦删除原始物体,复制出来的物体就看不到了,原因是物体中MeshFilter...
检测射线与边界盒AABB相交(C#代码Unity环境下测试通过)
说明:如果仅仅是再Unity环境下使用的话,直接使用Bounds.IntersectRay方法就好了,这里仅仅探索其算法。 上代码: bool RayCrossBounds(Ray ray, Bounds bounds){ if (bounds.Contains(ray.origin)) return true; // float tMinX = float.MinValu...