unity3d
小鱼游戏开发
一个做了几年的游戏开发
展开
-
HybridCLR Example
预留了读取buildInfo.json文件方便使用命令行模式启动时读取编译参数,以下为编译参数。如果是构建热更会根据编译目标存放到 FileServer/{buildtarget}下。热更构建的时候会把生成的文件复制到StreamingAssets目录下。根据提交记录和上次构建整包对比文件变化,aot出现改动时阻断。hybridclr 热更真机测试。原创 2024-01-15 18:22:43 · 872 阅读 · 0 评论 -
Roslyn 去除多余using
因为我们打包都是在打包机上操作的。一般情况下自己本地是不会打包也就不会知道在代码里面有多余using。在git的pre-commit钩子加上cs后缀文件的using检测。如果有多余的using直接删除。我们需要的是重载 VisitUsingDirective 函数,只需要返回空即可删除对应节点。经常出现打包到一半因为有多余的using导致的打包失败。当你添加新代码的时候VS会自动帮你添加对应的using,但是它只会帮你加不会帮你减。以上所有包含的信息在csproj里面都有记录。添加动态库所包含的文件。原创 2023-10-20 15:50:45 · 343 阅读 · 2 评论 -
基于体素场景的摄像机穿模处理
基于上一篇使用射线处理第三人称摄像头穿模问题基于体素的第三人称摄像机拉近简单处理。原创 2023-10-03 17:54:18 · 311 阅读 · 0 评论 -
一种基于体素的射线检测
修改步长会导致迭代次数暴增,并且想要不漏检需要很小的步长。下面使用了检测相交点是否连续检测是否空缺。首先射线经过的点必然连续,那么可以我们就可以直接对比上一次离开方块时的点和当前进入方块的点。体素检测,先检测当前位置是否是体素块,如果是,检测方块体内该位置是否有体素。否则就需要补充漏检的方块,有可能射线一次漏了2个方块没有检测。使用索引检测当前位是否有体素。先检测最靠近离开位置的坐标是否有方块。手动覆盖漏检的方块,青色为补充的检测。再检测靠近进入位置的坐标是否有方块。多个轴向观察射线是否在绘制的方块内。原创 2023-10-02 22:27:24 · 455 阅读 · 0 评论 -
射线和aabb相交平面法向量
【代码】射线和aabb相交平面法向量。原创 2023-09-18 00:20:14 · 140 阅读 · 0 评论 -
unity 编辑器时读取FairyGUI图集单个图像
还原public NTexture(Texture texture, Rect region) 构造传入来的region参数。X偏移坐标可以直接 uvRect.min.x * nativeTexture.width 得到真实的X偏移。图集里面的小图是有可能旋转的,可以通过访问 NTexture.rotated 判断在图集中是否旋转。Texture2D.GetPixel 和 Texture2D.SetPixel 接口读写非常慢。有数组后简单逆旋转90数组数据,就可以得到原来的小图。原创 2023-09-10 19:14:16 · 644 阅读 · 1 评论 -
把自定义格式导入unity生成Avatar
记录生成Avatar。把自定义格式导入unity生成Avatar。原创 2023-04-08 18:03:09 · 261 阅读 · 0 评论 -
ScrollRect 滚动后单个item坐标计算
实际的坐标只需要先计算content的坐标再计算子元素偏移。所以只需要处理LayoutGroup的Padding即可。因为item的坐标已经被引擎计算过了。最后相加就是实际item当前位置。原创 2022-12-24 17:10:19 · 213 阅读 · 0 评论 -
unity 调用AlertDialog
如何操作见:https://blog.csdn.net/qq_17813937/article/details/83277457?spm=1001.2014.3001.5502效果Unity首先是编写弹窗类的属性,用于设置弹窗信息using System;public class Dialog{ public string title; public string msg; public string[] buttons; public Action<st原创 2022-02-26 16:35:53 · 5596 阅读 · 0 评论 -
UnityWebRequest 异步下载
UnityWebRequest的异步写法using System;using System.Threading;using System.Threading.Tasks;using UnityEngine;using UnityEngine.Networking;public class Example : MonoBehaviour{ /// <summary> /// 任务取消源 /// </summary> Cancellatio原创 2021-12-10 13:48:42 · 1277 阅读 · 2 评论 -
unity 扩展
public static class GameObjectHelper{ const string gameObjectIsNull = "GameObject is Null"; public static T IsAddComponent<T>(this GameObject self)where T:Component { Assert.IsNotNull(self, gameObjectIsNull); var com = se原创 2021-11-25 00:11:58 · 2158 阅读 · 0 评论 -
获取预制体预览图
public class PreviewCameraEditor { Camera renderCamera; public static PreviewCameraEditor Create2D(Color color) { return new PreviewCameraEditor(true, color); } PreviewCameraEditor(bool orthograph...原创 2021-11-15 10:57:50 · 606 阅读 · 3 评论 -
节点编辑器运行时遍历之广度优先搜索
原理看其他文章/// <summary>/// 广度优先搜索/// </summary>public static class BFSHelper{ public static T[] BFSForEach<T>(this List<T> array, T start, Func<T, T, bool> isParentFun) { return BFSForEach(array.ToArray(), st原创 2021-11-01 18:18:08 · 163 阅读 · 0 评论 -
旋转摄像机
using System;using UnityEngine;namespace MainEditor{ /// <summary> /// 爱的魔力转圈圈 /// 旋转摄像机指定度数 /// </summary> public class RotationCamera : MonoBehaviour { public int weight = 8; public float radius = 10原创 2021-10-20 17:47:19 · 104 阅读 · 0 评论 -
物理轨道模拟
素材来自:https://github.com/Matthew-J-Spencer/Trajectory-Line-Unity做游戏的时候难免会遇到需要物理预测的需求例如。要求显示炮弹发射轨迹,让玩家拥有更好的操作体验编写代码过程中。我们可以自己写一套,也可以直接使用自带的场景模拟自己写一套各有千秋,这里只说Unity自带的物理模拟SceneManager除了用来加载场景,卸载场景,获取场景对象,还可以创建场景创建时可以顺便指定创建对应的物理模拟LocalPhysicsMode说原创 2021-10-02 02:02:31 · 609 阅读 · 0 评论 -
射线检测可视化
3Dusing System;using UnityEngine;public class DrawPhysics:MonoBehaviour{ public RaycastHit Raycast(Vector3 origin, Vector3 direction, float maxDistance) { RaycastHit hitInfo; var isCollider = Physics.Raycast(origin, direction,原创 2021-09-22 23:48:54 · 445 阅读 · 0 评论 -
灵活的网格布局
总所周知 Grid Layout Group 平平无奇,单元格大小都要手动设置。想做个九宫格布局。还要手动计算单元格大小,偏移量等使用Vertical Layout Group 和 Horzontal Layout Group 组合又非常麻烦想要自定义布局,只需继承 Layout Group 重写 CalculateLayoutInputHorizontal 单元格坐标以及大小即可 public override void CalculateLayoutInputHorizontal()原创 2021-09-01 02:01:48 · 351 阅读 · 0 评论 -
无限滚动 ScrollRect
//有空的时候写文档demousing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Test : MonoBehaviour{ public Button addData; public Button gotoIndex; public Button changedLayout; public L原创 2021-06-23 01:38:25 · 536 阅读 · 1 评论 -
2张图片 从上到下分割显示
Shader "Custom/ClipTexture"{ Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _TwoTex("TwoTex (RGB)", 2D)= "white" {} _Glossiness ("Smoothness", Range(0,1)) = 0.5...原创 2021-06-19 00:17:57 · 196 阅读 · 0 评论 -
初识UGUI
Name功能Canvas画布Canvas Scaler画布缩放Graphic Raycaster图形射线检测RectTransform矩形变换组件Image,RawImage图片Button按钮Dropdown下拉列表Slider滑动条Scrollbar滚动条Scroll Rect滚动视图Toggle开关Toggle Group开关组Text文本InputField输入框Sha...原创 2021-06-17 02:55:17 · 987 阅读 · 0 评论 -
unity gradle
根据https://developer.android.google.cn/studio/releases/gradle-plugin下载对应gradle设置maven{url'https://maven.aliyun.com/repository/google'}maven{url'https://maven.aliyun.com/repository/jcenter'}C:\Users\Administrator\.gradle的gradle.properties删除...原创 2021-05-20 20:43:20 · 228 阅读 · 0 评论 -
unity 接入谷歌广告
官方文档:https://developers.google.cn/admob/unity/quick-start使用实例:using UnityEngine;using GoogleMobileAds.Api;using UnityEngine.UI;public class GoogleMobileAdsDemoScript : MonoBehaviour{ public string adUnitId = "ca-app-pub-3940256099942544/63.原创 2021-05-09 21:37:01 · 1156 阅读 · 0 评论 -
Newtonsoft.Json 反序列化字典Key为Vector时解决方案
栗子: using Test = Dictionary<Vector2Int, Vector2>; public class NewBehaviourScript : MonoBehaviour { private void Awake() { Test list = new Test(); list.Add(Vector2Int.zero, Vector2Int.one); ...原创 2021-04-29 00:25:39 · 1042 阅读 · 2 评论 -
vscode tolua 代码提示
vscode lua.rar把 emmylua-unity-1.0.3.vsix 复制到 VSCode 的 bin目录下按住 Shift 右键 在此处打开 PowerShell 窗口,执行下面命令code --install-extension emmylua-unity-1.0.3.vsix安装好后打开vscode 安装emmyLua安装完成记得重启vscode 打开unity 的lua目录,空目录也行把EmmyLuaService.cs丢到unity项目的Editor文件夹下编译后 选择原创 2021-03-26 22:27:53 · 1053 阅读 · 1 评论 -
unity 摇杆
using UnityEngine;public class NewBehaviourScript : MonoBehaviour{ public Rocker rocker; public new Rigidbody rigidbody; public float speed; Vector2 offset; private void Awake() { rocker.Radius = 100; rocker.onDr.原创 2021-03-22 19:01:23 · 178 阅读 · 2 评论 -
拖动物体
using UnityEngine;public class MouseDragTarget : MonoBehaviour{ public Transform target; public float speed = 10; Vector3 startPos; Vector3 targetPos; Ray ray; RaycastHit hit; private void Awake() { targetPos...原创 2021-03-19 18:22:15 · 84 阅读 · 0 评论 -
unity 2D 二段跳
using UnityEngine;public class PlayerMovement : MonoBehaviour{ public new Rigidbody2D rigidbody; public float speed; public float jumpForce; public Transform groundCheck; public LayerMask ground; public bool isGround; publi.原创 2021-03-13 22:34:41 · 548 阅读 · 1 评论 -
ugui Text 首行标点
需求:首行不可以为标点原理:检测到每行第一个字符是标点时从上一行最后一个字符开始全部向后移动一个字符位设计分辨率和真机分辨率不一致时,顶点偏移需要乘以分辨率缩放值由于英文空格没有顶点,为了偷懒直接替换为了\u00A0方便对应顶点使用方式:直接挂在Text组件下面即可using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;[RequireComponent(typeof(Text)原创 2021-02-28 16:42:14 · 373 阅读 · 0 评论 -
FairyGUI 代码生成插件
生成的代码/** This is an automatically generated class by FairyGUI. Please do not modify it. **/using FairyGUI;namespace ETModel { [ObjectSystem] public class UI_CanteraComponentAwakeSystem : AwakeSystem<UI_CanteraComponent, GObject> { ...原创 2021-02-21 21:32:04 · 2615 阅读 · 4 评论 -
unity 命令模式
目录简介CommandAttributeICommandACommandPluralityCommandCommandComponent简介高版本可以直接使用异步编程简单粗暴本人工作需要的Unity版本是随机的,从4.x到2019都需要为了向下兼容有了以下命令组件场景:现在有10个预制体,10个图片,10个文本需要加载,加载完成后需要对这些资源进行一些操作肯定不能简单的写一堆回调等待加载完成,再去进行操作CommandAttribute...原创 2021-01-30 23:26:40 · 459 阅读 · 0 评论 -
动画事件工具2
地址等待审核中原创 2021-01-14 20:59:22 · 139 阅读 · 0 评论 -
显示AddComponentWindow
using System;using System.Reflection;using UnityEditor;using UnityEngine;public class AddComponentEditor{ Type window; Type componentItem; EventInfo selectionChanged; Delegate selectDelegate; EventInfo windowClosed; Delegat.原创 2021-01-14 17:42:10 · 288 阅读 · 0 评论 -
动画事件工具
using Microsoft.Win32;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using UnityEditor;using UnityEngine;[CustomEditor(typeof(AnimationClipEvent))]public class ModelEventEditor ...原创 2021-01-13 22:59:05 · 390 阅读 · 0 评论 -
unity导入fbx自动切割
参考链接:http://wiki.unity3d.com/index.php/FbxAnimListPostprocessor默认为一个配置对应一个模型配置格式:文件名为 模型.txt0-100 loop ide101-200 attack单配置多模型配置格式配置文件名为 configure.txt--10-100 attack201-300 loop idle--20-100 attack201-300 loop idleu...原创 2020-09-25 11:34:42 · 626 阅读 · 0 评论 -
unity 之 对象引用谁以及谁引用了对象
目录查找单个对象引用了谁对象引用了谁谁引用了对象目前在换皮公司工作,一般来说拿到的源码对象都是挂上去的很少那种配置生成。所以,需要修改一个对象的时候就需要知道是那个脚本改变了它,只需要查找对象被谁引用就好了。刚开始写的时候我是想要反射查找的。后来爆栈我意识到这不行。我换了一种方式序列化Yaml查找对象,虽然我序列化了,但是我没办法与对象树上的对象对应起来。后来想起了编辑器的SerializedObject,测试了一下可以拿到引用查找单个对象引用了谁public st原创 2020-08-15 11:31:00 · 706 阅读 · 0 评论 -
unity 替换项目文本和图片
地址:https://gitee.com/weifen/unityToolsv2.1合并 Hierarchy对象列表和prefab列表 到 对象列表修复文本导出bugv2.0添加了 Hierarchy对象列表,该列表关联场景添加了 搜索功能添加了 组件对象列表v1.0添加了 代码文本编码替换 UTF-8添加了 所有文本导出到 游戏文本.xlsx添加了 翻译文本 到 Resources/LanguageManager 对象添加了 添加翻译组件到所有 Text 组件.原创 2020-07-13 18:09:37 · 1390 阅读 · 0 评论 -
FairyGUI 生成模板修改
效果:/** This is an automatically generated class by FairyGUI. Please do not modify it. **/using ETModel;using FairyGUI;namespace ETHotfix.Main { [ObjectSystem] public class UI_SettingAwakeSystem : AwakeSystem<UI_Setting, GObject> { publ原创 2020-06-22 19:25:04 · 1319 阅读 · 0 评论 -
unityeditor 证书过期
今日测试本地时间的一些操作。关闭unity后再打开遇到证书过期。无法打开编辑器处理。把本地时间更新即可。估计是当前证书和服务器证书日期不匹配造成的...原创 2020-04-16 09:50:38 · 1105 阅读 · 0 评论 -
Unity 消息队列
参考链接http://www.voidcn.com/article/p-wgsrxllo-btn.htmlhttps://www.cnblogs.com/cyjb/archive/2013/03/21/DelegateBuilder.html这个队列做了什么队列初始化时会把非继承自MonoBehaviour的自动注册到消息事件自动把类的所有不同参数的OnHandle注册到...原创 2019-12-28 00:18:31 · 2343 阅读 · 0 评论 -
使用LuaFramework
修改为即时生效Assets\LuaFramework\Scripts\ConstDefine\AppConst.cs中的LuaBundleMode修改为false,代码文件便不会以AssetBundle模式读取,会直接生效,以方便调试。修改lua路径直接使用IDEA读取LuaFramework的Lua目录会多出很多meta后缀的文件,所以把Lua目录移动至Assets文件夹外面...原创 2019-02-12 11:20:14 · 1313 阅读 · 2 评论