unity

Unity 编辑器扩展之反射重载的私有方法

陌路散爱 提交于 2019-12-23 09:27:02
效果: 直接上菜了喂 using System; using System.Reflection; using UnityEditor; using UnityEngine; public class MyReflection : EditorWindow { /* * 反射获取私有方法 */ [MenuItem("MyEditor/反射/MyReflectionTest/GetName()")] public static void Execute() { Type type = typeof(MyReflectionTest); object obj = Activator.CreateInstance(type); MethodInfo method = type.GetMethod("GetName", BindingFlags.NonPublic | BindingFlags.Instance,null, CallingConventions.Standard, new Type[] { },null); method.Invoke(obj,null); } [MenuItem("MyEditor/反射/MyReflectionTest/GetName(string name)")] public static void Execute1() { Type type =

unity中使用wordnik

本小妞迷上赌 提交于 2019-12-23 05:50:03
unity 中使用wordnik wordnik简介 准备工作 unity使用 坑 wordnik简介 它其实就是一个我们经常使用的词典,更准确来说是一本拥有强大题库的一个英文词典。它的词库很完善,提供了很多的接口,来供开发者使用,并且接入程序中,满足各种不同的需求。(包括 :解释,造句等等)。我使用到的地方,是由于我们公司开发的是一款word游戏,所以会有这个有关解释的入口,所以做了接入。 准备工作 wordnik的官网地址:https://www.wordnik.com/ 获得wordnik的开发者的apikey (这个key是所有开发工作的前提,需要在官网的dev-api入口进行注册申请,这个是免费的一般需要大概一周左右的时间会通过你注册的邮件发送给你) 也有收费的版本,价格如下。可以自行到官网查询。我理解的他的call就是一次请求。 https://developer.wordnik.com/docs#/ 这个是它的文档,它的文档不是那种纯文字的解释文档,而是一些帮助你测试的一些http请求。 支持功能很多,可根据自己的需要选择:如图 如下图,你可以通过http请求来获得当前单词的发音: 左边填入你想要查询的单词,然后点击 “Try it out” 就会出现右边的结果,可以复制url并且把apikey换成自己的,就可以进行查询了。 unity使用 在unity中使用也很简单

unity3d让三维物体跟随鼠标

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-23 04:08:32
效果图: 1.创建一个三维物体Cylinder圆柱体 Target 2.创建词汇表Yellow材质球 3.将材质球挂载到Target物体上 4.创建脚本MouseMove.cs MouseMove.cs代码 using UnityEngine; /* 让物体完全跟随鼠标 */ public class MouseMove : MonoBehaviour { [Header("主相机")] [Tooltip("主相机")] /// <summary> /// 主相机 /// </summary> public Camera m_mainCamera; [Header("目标物体")] [Tooltip("目标物体")] /// <summary> /// 目标物体 /// </summary> public Transform m_target; void Start() { isDown = false; targetWTSP = m_mainCamera.WorldToScreenPoint(m_target.position); } /// <summary> /// 是否按下 /// </summary> private bool isDown; /// <summary> /// 记录初始化时候target世界坐标转屏幕坐标时候的位置 WTSP=

Unity ShaderGraph

≯℡__Kan透↙ 提交于 2019-12-22 14:14:23
怎样使用Unity ShaderGraph 这边给大家总结一下,这边想要使用Unity ShaderGraph需要 Unity 2018.1以上的版本。 需要在window-pacakgemanager-all下面下载Lightweight Render以及ShaderGraph两个包。 然后在文件夹界面右键create-Rendering下创建一个LightWeightPipelineAsset, 之后Edit-ProjectSettings-Graphcs。将刚刚创建好的LightWeightPipelineAsset放入ScriptRenderingPipelineSetting一栏。 之后再文件夹界面右键create-shader-PBR Graph。双击进入Shader,就可以进入ShaderGraph的界面了。 来源: CSDN 作者: 绀目澄清 链接: https://blog.csdn.net/u013628121/article/details/103651234

Unity中使用Socket进行Tcp连接-网络线程无法访问UI问题(五)

跟風遠走 提交于 2019-12-22 10:53:04
由于unity中的UI只能在主线程中访问,在网络线程中接收到的协议,无法直接用来处理UI方面显示逻辑。因此,可以先将网络线程接收到的协议缓存起来,在从主线程中一条一条取出来处理。 static void OnReceiveData() { if (buffCount<2) { return;//收到数据小于字节长度描述 } int bodyLength = BitConverter.ToInt16(readBuff,0); if (buffCount < 2 + bodyLength) { Debug.Log("收到数据不完整"); return;//长度不够一条完整消息 } string recStr = Encoding.Default.GetString(readBuff,2, bodyLength); Debug.Log("收到服务器消息" + recStr); MsgBase msgBase = MsgBase.Decode(recStr); lock (MsgHandler.Instance.msgList)//多线程访问,加锁 { MsgHandler.Instance.msgList.Add(msgBase); } int start = 2 + bodyLength; int count = buffCount - start; Array.Copy

Unity Entity Component System --- Creating Gameplay

▼魔方 西西 提交于 2019-12-21 20:15:33
Creating Gameplay 该部分讨论用Unity编辑器创作基于DOTS的游戏和其它应用,以及如何利用ECS提供的system和components来实现你游戏。 Systems包括: Unity.Transforms — 提供定义世界空间方位的组件,3D对象层次,以及管理它们的系统。 Unity.Hybrid.Renderer — 提供在运行时渲染ECS 实体的系统和组件。 Authoring Overview 创作概览 Unity编辑器引用了DOTS packages后,可以创建基于DOTS的游戏,在编辑器中,可以向通常创建GameObject那样创建场景,ECS会将场景中的GameObjects转换到entities。使用DOTS最大的不同是不再需要实现你的MonoBehaviours来存储实例数据和实现游戏逻辑,而是定义ECS组件来存储数据,并实现系统再实现游戏逻辑。 GameObject conversion 游戏对象转换器 通过GameObject 转换器,各种转换系统处理它们可识别的MonoBehaviour组件,并将它们转换成基于ECS的组件。例如Unity.Transforms转换器会检测UnityEngine.Transform组件,并添加ECS组件来替换,例如LocalToWorld。你可以实现IConvertGameObjectToEntity

xLua学习总结(四)---lua访问C#

感情迁移 提交于 2019-12-21 19:23:42
1.在lua中调用unity日志打印hello world: CS.UnityEngine.Debug.Log("hello world") 2.通过lua中创建一个unity中的GameObject local newGameObj = CS.UnityEngine.GameObject("CreatByLua") newGameObj.transform.position=CS.UnityEngine.Vector3(1,2,3) 注意:不需要使用new,按照上面方式,可以调用Unity中的方法,在场景中创建一个名为CreatByLua的游戏物体,并对其位置赋值。 来源: CSDN 作者: HelloWorldTianNa 链接: https://blog.csdn.net/l17768346260/article/details/103636096

Unity Entity Component System --- TransformSystem

孤街醉人 提交于 2019-12-21 19:18:01
Section 1: Non-hierarchical Transforms(Basic) LocalToWorld(float4X4)表示从本地到世界空间的变换。这是一种经典的表示方式,也是系统中唯一用来访问本地空间的组件。 一些DOTS特性,只有存在LocalToWorld时才能执行。 例如,RenderMesh组件依赖LocalToWorld来渲染实例。 如果只有一个LocalToWorld组件,那么没有transform system会写或影响LocalToWorld数据(Translation,Rotation,Scale组件配合)。 如果没有其它的变换组件添加到该实体,则用户可以直接修改LocalToWorld的数据来为实例定义方位变换。 所有的transform systems和其它的transform components都是用来提供接口来更新LocalToWorld的数据。 LocalToWorld = Translation * Rotation * Scale。 如果有Translation(float3),Rotation(quaternion),Scale(float)和LocalToWorld同时存在,那么transform system会把这些组件组合并写到LocalToWorld中。 下面列出具体的组合:

Unity 浏览本地图片并加载

橙三吉。 提交于 2019-12-21 06:52:42
在开发过程中,经常会有在软件中浏览本地文件的需求,今天就在Unity中实现一下浏览本地图片并加载的小功能。 功能预览: 其实实现起来很方便。注释中都有代码,只需要两个代码,一个是调用系统的窗口,一个是加载图片 using UnityEngine ; using System . Collections ; using System ; using System . Runtime . InteropServices ; /// <summary> /// 调用系统的窗口,数据接收类 /// </summary> [ StructLayout ( LayoutKind . Sequential , CharSet = CharSet . Auto ) ] public class OpenFileName { public int structSize = 0 ; public IntPtr dlgOwner = IntPtr . Zero ; public IntPtr instance = IntPtr . Zero ; public String filter = null ; public String customFilter = null ; public int maxCustFilter = 0 ; public int filterIndex = 0 ;

Unity3D平台编译类型

你离开我真会死。 提交于 2019-12-21 06:20:35
Platform Dependent Compilation Unity includes a feature named “Platform Dependent Compilation”. This consists of some preprocessor directives that let you partition your scripts to compile and execute a section of code exclusively for one of the supported platforms. Furthermore, you can run this code within the Editor, so you can compile the code specifically for your mobile/console and test it in the Editor! Platform Defines The platform defines that Unity supports for your scripts are: Property:Function: UNITY_EDITOR Define for calling Unity Editor scripts from your game code. UNITY_EDITOR