unity技巧
晴耕雨読3321
这个作者很懒,什么都没留下…
展开
-
Unity 双击Asset后回调的实现
利用unity提供的OnOpenAssetAttribute特性。unityAPI描述用于打开 Unity 中某个资源的回调属性(例如,双击 Project Browser 中的某个资源时会触发回调)。将此属性添加至某个静态方法后,系统会在 Unity 即将打开资源时调用该方法。该方法应有以下签名之一:static bool OnOpenAsset(int instanceID, int line)static bool OnOpenAsset(int instanceID, int line,原创 2021-08-05 12:19:29 · 1019 阅读 · 0 评论 -
命令行开启一个unity实例和执行其中的脚本方法的使用和注意
工作中有一个需求,就是将unity工程放在服务器上,自动执行一些打包任务。这时候就需要启动一个没有GUI的unity,并自动执行其中的打包脚本。1.官网的说明:官网API原创 2021-08-03 10:08:40 · 1744 阅读 · 0 评论 -
搭建自己的Unity Package
在开发过程中我们希望能把一些公共独立的功能单独做成一个package,方便在其他项目里使用。这里就涉及到怎么做一个package。这个帖子就讲的比较详细https://www.jianshu.com/p/153841d65846还有可以参考unity官方文档https://docs.unity3d.com/Manual/CustomPackages.html...原创 2021-07-17 14:09:00 · 1512 阅读 · 1 评论 -
Unity制作自己的Project Template
aaa原创 2021-07-17 11:18:33 · 1254 阅读 · 4 评论 -
Unity Editor下改变场景里prefab的参数后保存时注意点
在改变场景里prefab的时候,要记得将所改变的组件设为脏(tag和layer不用)。EditorUtility.SetDirty(component);之后再调用保存场景,才能将场景里的prefab修改保存到场景文件里。//保存当前场景EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());PS 可以在修改前将组件加入undo,用于实现撤销Undo.RecordObject(Component,"msg");//m原创 2021-07-09 10:23:04 · 2194 阅读 · 2 评论 -
记录:注意Unity返回的所有数组,只是数组的副本
注意Unity返回的所有数组,只是数组的副本例如Renderer里的sharedMaterialsby unity APIpublic Material[] sharedMaterials ;描述该对象的所有共享材质。此为渲染器使用的所有材质的数组。Unity 支持单一对象使用多种材质; 在这种情况下,sharedMaterials 包含所有材质。 如果有多个材质,sharedMaterial 和 material 属性返回第一个 使用的材质。修改 sharedMaterials 中的任何材质原创 2021-07-06 12:08:40 · 340 阅读 · 1 评论 -
OculusQuest2 直接连电脑调试
实际上是用Quest2的Oculus Link 将头显作为Rift来使用。1.将头显连接到电脑上,执行Oculus link,成功连接上(就是打开了Oculus home)。2.打开unity工程,在Project Setting的XR Plug-in Management里PC平台上Oculus选上。3.运行工程,unity就会自动识别头显和控制器来运行。PS:由于是按照Rift运行,所以实际上程序是跑在PC上,最终效果还是要打包到Quest里确认才行。...原创 2021-05-30 15:05:07 · 15042 阅读 · 0 评论 -
在URP中使用UICamera
有时候我们想要用单独一个相机来渲染UI。1.内置管线在内置渲染管线里,我们可以设一个主相机,再设一个UI相机。将UI相机的ClearFlags设为Depth Only,再设置相应的要渲染的层,即可将UI相机的图像叠加到主相机上(注意相机优先级)。2.URP相机栈但URP里的Camera没有clearFlags,改为了RenderType 。RenderType里只有base和overlay。所以通常方法是利用相机栈来进行多个相机的叠加。同内置渲染管线一样,我们可以设一个主相机,再设一个UI相机。原创 2021-05-13 00:08:12 · 2414 阅读 · 1 评论 -
unity里如何在点击UI时,避免触发游戏内操作。
如果在游戏中同时有点击UI和检测鼠标点击的操作时,要避免在点击UI时,避免触发游戏内操作。用eventsystem去检测是否点到ui,方法如下:if (Input.GetMouseButtonDown(0)) { //试图获取当前点击时选择的物体 GameObject btn = EventSystem.current.currentSelectedGameObject; if (btn == null)原创 2021-04-29 14:31:45 · 2392 阅读 · 0 评论 -
Unity URP一分钟实现遮挡透视
1.设定要遮挡透视的对象的层,比如player2.准备好被遮挡后要替换的材质3.在默认的ForwardRendererData下新增一个Renderer Feature4.设置如下:layer mask:要应用的层。overrides/material:要替换的材质Depth/Depth test:开启深度测试,决定renderer feature是否渲染object的片元。深度更大是渲染(即被遮挡)...原创 2021-04-27 12:13:08 · 3217 阅读 · 1 评论 -
Unity 编辑器内建图标获得
通过调用EditorGUIUtility.IconContent(string name, string text = null);能获得icon的UIContent,从中可以调Image来获得Icon的Texture。例如://获得shader文件的IconTexture icon = EditorGUIUtility.IconContent("Shader Icon").image;Icon Name参考:Editor-Icon...原创 2021-04-12 17:24:48 · 943 阅读 · 0 评论 -
unity Conditional特性 总结
除了用预处理指令来控制编译之外,在Unity中可以用Conditional特性来控制编译。一、使用方法[Conditional("Debug")]public static void Logger(string msg){ Debug.Log(msg);}之后在playerSetting/Player/OtherSettings里的Scripting Define Symbols里添加上Debug字符时(用;号隔开)该方法即被编译。删去的话,这个方法就不会被编译。[Conditio原创 2021-02-03 22:11:42 · 3422 阅读 · 0 评论 -
利用导航网格限制玩家移动范围
在看插件案例时,发现了一个利用NavMeshAgent组件来限制玩家移动范围的用法。感觉挺有意思的,就先记录下来。1.原理其实挺简单的,就是agent在移动到边缘时,因为无法再向前了,NavMeshAgent中的Speed就会自动为零,于是把这个变量乘到实际的移动里就可以了。2实现具体代码如下:using UnityEngine;using UnityEngine.AI;[RequireComponent(typeof(NavMeshAgent))]public class MoveByN原创 2020-12-06 23:31:18 · 607 阅读 · 0 评论 -
背包系统搭建总结
背包系统搭建,实现效果如下:1. UI系统的搭建首先创立一个UIroot空物体其子物体是UI相关的游戏物体创建一个UICanvas作为所有窗口的根节点,所有生成的UI窗口的canvas都在其下做统一管理。2. 设定好UICanvas的由一个专门渲染UI的camera渲染,同时设定好自适应的尺寸。采用单例模式,用一个UIManager类来管理。•1.在UImanager定义一个枚举类,规定可能存在的窗口。•2.用一个字典类保存每一个打开过的窗口。键就是枚举类的值,值是动态加载生成的原创 2020-10-19 01:43:24 · 903 阅读 · 0 评论 -
unity DOTS的学习总结之Job System应用——绘制曼德勃罗集合
接上回:DOTS的学习总结之Job System的介绍,这次就利用之前了解知识来应用一下做点效果。上回在这:1.首先实现复数类public struct Complex{ float a; float b; public Complex(float a, float b) { this.a = a; this.b = b; } public static Complex operator +(Complex p1, Com原创 2020-10-18 16:09:00 · 750 阅读 · 0 评论 -
unity 的Cinemachine组件运用
1.第三人称视角控制通过Package Manager 安装CineMachine1) 最简单的方法使用freeLook虚拟相机常用的调整为:1.观察目标:将要看的目标放在这里。2输入控制:把你想用来控制的虚拟轴(就是InputManager里的)的名字输入进去就行。默认是填mouse那个输入轴。注意:似乎不支持New InputSystem。所以在用New InputSystem时要么用在projectSetting/player里改成both设置。要么自己写脚本去调用这个组件中的原创 2020-10-18 02:29:09 · 4579 阅读 · 2 评论 -
Unity的NewInputSystem的InputManager实现多玩家的总结
1.首先自然是安装InputSystem的包2.创建一个空物体挂载InputManager组件Notification Behavior:用来绑定当玩家加入或离开时的事件。Joining Behavior :用来指定玩家加入的方式player Prefab : 玩家预制体Joining enabled by default : 勾选该项时默认组件激活时能加入玩家limit Number of Player : 是否限制最多玩家数量enable Split-Screen是否分屏要注意的问题:原创 2020-10-17 01:40:37 · 2191 阅读 · 2 评论 -
Unity超基础学习笔记(一)
1.安装Unity和认识Unity界面通过访问unity下载来下载unityHub或者直接下载unity。(应该需要注册个unityID)。本次课程用的版本是2019.4.3f1。打开后新建一个项目。任意模板项目都行,因为可以互相转。这里主要选3D模板。之后编辑界面为:Hierarchy标签:用列表形式表现现场景内的对象,和对象之间的关系(可以用拖到操作)。Scene标签:用来观察和操作2/3D场景。Game标签:用来观察游戏运行时的情况。Inspector标签:显示当前选中对象的信息原创 2020-07-28 00:19:44 · 270 阅读 · 0 评论 -
unity小技巧总结
这是对unity公众号上一个unity小技巧的介绍视频的总结原文是这个:https://unity.cn/projects/unity-tips?signup=true1)unity常用快捷键1.1 QWERTY1.2 Ctrl+Sunity不会自动保存,注意经常保存场景。1.3 alt+点击场景里物体旁的小三角展开或收起所有子物体。1.4 通过shortCuts Manager来确认新建快捷键。(2019.3版本以上)2)运行模式着色因为在运行模式下的修改不能保存下来,为了防止原创 2020-06-29 19:11:12 · 835 阅读 · 0 评论