unity

Unity C# 检索prefab、animation、scenes未使用的脚本

天涯浪子 提交于 2020-01-20 12:46:30
using UnityEngine; using System; using System.IO; using System.Text; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Core; using UnityEditor; using UnityEngine.UI; using System.Collections.Generic; public static class CheckPrefabScript { public static List<string> scriptStrs = new List<string>(); public static List<string> unUsed = new List<string>(); [MenuItem("Tools/Check all prefab Script")] public static void DoCheck() { string[] prefabPath = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets" }); string[] scenePath = AssetDatabase.FindAssets("t:Scene", new string

[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights

为君一笑 提交于 2020-01-20 10:05:58
[我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights 既 上一篇分享了中文字幕的摄像机介绍Cameras 后,本篇分享一下第2个已完工的视频,即《beginner Graphics – Lessons系列之灯光介绍Lights》。听译、时间轴、压制者均为本人。请勿将视频用于非法目的。 有需要本篇高清视频的同学麻烦支付100元并留下你的Email~ 有视频有真相 视频中的重点 类似现实世界,Unity中用 灯光 照亮场景 没有灯光,场景中的物体在摄像机中是不可见的 宽泛的说,Unity中有两种灯光 动态(Dynimic)光 和 烘焙(Bake)光 动态光在游戏运行中是实时计算的 你只需在场景中添加灯光对象就可以了 烘培光是在线下(Off-line)计算并保存成纹理(Texture)的 这些灯光纹理被贴到烘培的物体上以提升性能 为了照亮场景,要使用 灯光组件 (light component) 和其它组件一样,灯光组件也要附加到游戏对象(Game Object)上 我们可以用这个游戏对象的Transform属性来移动灯光 灯光组件提供了4种灯光类型 点光(Point Light) 平行光(Directional Light) 聚光灯(Spot Light) 和只用于烘培的面光(Area Light)

Unity 视频缩略图获取

↘锁芯ラ 提交于 2020-01-20 08:25:44
IEnumerator GetVideoThumb(string urlpath,int index) { print(index); Transform go= Instantiate(VideoPlayerPrefab); VideoPlayer tmpVp= go.gameObject.AddComponent<VideoPlayer>(); go.gameObject.AddComponent<IndexNumber>(); go.GetComponent<IndexNumber>().index = index; tmpVp.source = VideoSource.Url; tmpVp.url = urlpath; tmpVp.sendFrameReadyEvents = true; //绑定的事件会不断调用 tmpVp.frameReady += OnNewFrame; tmpVp.Play(); yield return null; //while (tmpVp.texture == null|| tmpVp.isPlaying==false) //{ // yield return new WaitForSeconds(1.5f); //} //Texture2D videoFrameTexture = new Texture2D(Screen.width,

Unity中的各种寻找GameObject方法归纳

那年仲夏 提交于 2020-01-20 04:13:38
1.GameObject.Find():寻找Hierarchy面板中的activie 不为false的游戏对象; 路径如官方事例写法: public class ExampleClass : MonoBehaviour { public GameObject hand; void Example() { hand = GameObject.Find("Hand"); hand = GameObject.Find("/Hand"); hand = GameObject.Find("/Monster/Arm/Hand"); hand = GameObject.Find("Monster/Arm/Hand"); } } 2.Transform.Find() 官方解释是通过名字获取到一个子物体(Finds a child by name and returns it),该方法可以获取到隐藏(inactive)的GameObject, 可以通过先获得父对象(active必须为true),再通过寻找孩子Transform.Find() GameObject rootObj = GameObject.Find("GameObject"); GameObject transformObj= rootObj.transform.Find("xxxx").gameObject;

Unity 新的输入系统Input System(一)

落花浮王杯 提交于 2020-01-20 01:57:35
最近看见Unity出了新的输入系统Input System,本着喜新厌旧的原则,就让我们来学习学习这个新系统。 官方文档: https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Installation.html 安装 运行环境:Unity 2019.1+ 和 .NET 4 runtime 官方的文档中已经讲得很详细了,我英语这么差都能看懂,大家肯定莫得问题。 简单来说就是在Package Manager中安装Input System,然后在Project Settings中的Player设置里将Active Input Handling设置为Input System即可。 设置好后运行工程,会发现之前的UGUI的界面无法响应点击事件,我们需要将默认场景中的EventSystem中的Standalone Input Module变更为新的Input System UI Input Module组件。 简单入门 环境配置好后,我们就可以在脚本中直接通过获取输入设备来获取输入,比如 var gamepad = Gamepad.current;//手柄 var keyboard = Keyboard.current;//键盘 var mouse = Mouse.current;//鼠标 var pointer

UI shader 增加mask遮罩的支持

匆匆过客 提交于 2020-01-20 01:00:08
年前最后一贴,祝自己在明年能获得更多的Exp. 在为ui写shader时 一定要考虑到 ui mask 的问题, 加入对应的裁剪代码. [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 ZTest [unity_GUIZTestMode] #include "UnityUI.cginc" #pragma multi_compile __ UNITY_UI_CLIP_RECT #pragma multi_compile __ UNITY_UI_ALPHACLIP #ifdef UNITY_UI_CLIP_RECT col.a *= UnityGet2DClipping(i.worldPosition.xy, _ClipRect); #endif #ifdef UNITY_UI_ALPHACLIP clip (col.a - 0.001); #endif 来源: CSDN 作者: 拔箭四顾心茫然 链接: https://blog.csdn.net/qq_26365139/article/details/104039154

unity拖拽物体

非 Y 不嫁゛ 提交于 2020-01-19 17:06:11
Vector3 MyScreenPointToWorldPoint(Vector3 ScreenPoint, Transform target) {    //得到物体在主相机的某个方向   Vector3 dir = (target.position - Camera.main.transform.position);   //计算投影   Vector3 norVec = Vector3.Project(dir, Camera.main.transform.forward);   return Camera.main.ViewportToWorldPoint(     new Vector3(       ScreenPoint.x/Screen.width,       ScreenPoint.y/Screen.height,       norVec.magnitude     )   ); }   Vector3 startPos;     Vector3 endPos;   Vector3 offset; private void OnMouseDown() {   startPos = MyScreenPointToWorldPoint(Input.mousePosition, transform); } private void OnMouseDrag() {  

Unity3D基础--动态创建和设置游戏对象

半城伤御伤魂 提交于 2020-01-19 14:39:28
转载自原文: http://m.blog.csdn.net/blog/smbroe/43488627 1. 如何动态创建对象:调用 GameObject 的 CreatePrimitive 方法可以按模型进行创建, PrimitiveType 中可选的模型有, Cube (立方体), Sphere (球体), Capsule (胶囊), Plane (平原), Cylinder (圆柱);创建出的对象不需要 Add 之类的就可以显示出来 GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);<span style="font-family:宋体;">//指定游戏对象的位置 2.动态添加组件:通过 AddComponent<Rigidbody>(); 可以为一个 GameObject 对象添加一个刚体组件,其中 Rigidbody 表示刚体,我们可以通过更改这个类型来为其添加不同的组件。当我们添加刚体组件后可以获得GameObject的rigidbody对象并对刚体进行设置 cubeObject.AddComponent<Rigidbody>();/

网络框架之SuperEnging

旧巷老猫 提交于 2020-01-19 05:26:21
作者在闲暇时间做了一个比较粗糙的类库,此类库特为解决网络基础差的同学。废话不多说直接上教程。 在使用之前先新建控制台应用程序,此操作省略。 然后下载解压DLL,并添加引用:进入SuperEnging-Dll文件夹,就能看到两个类库,如果不使用Unity的话可以不添加UnityFrame.dll 接下来我们在服务端引入命名空间 using SLIB; 并且创建如下代码: //客户端类,实现自定义功能 public class Clients : Client { public string name; } class Program { static void Main(string[] args) { //创建网络类 NetWork<Clients> net = new NetWork<Clients>(); //开启服务器端,自动获取地址 net.ServerStart(net.getLocalIP(), 1231, SocketType.Stream, ProtocolType.Tcp); //添加消息事件,用来接收客户端消息 net.AddMessageEvent(MessageEvent); //添加客户端连接事件,客户端连接时调用 net.AddClientConnect(ClientConnect); //等待用户操作 Console.ReadKey(); } /

Unity运行时地形编辑器——RuntimeTerrainEditor

∥☆過路亽.° 提交于 2020-01-19 02:47:30
上一篇关于地形文章写完后(好像也有点遥远了),这个运行时地形编辑器也基本上满足自己需求了,抽空稍微整理了一下做成了一个独立的工具,unity2018.3及以上可用,一开始也是适配了2017的,后来由于自己已经完全不用2017了,就放弃了对2017的支持。 Github源码链接 支持跨地形编辑 笔刷 地形的抬高,降低,平滑 树的种植和删除 草的种植和删除 贴图编辑 地形高度编辑支持使用笔刷 树、草的编辑支持使用笔刷 操作的撤回 一、RuntimeTerrainEditor   提供了对地形高度,细节,树木,纹理四大类的修改,其中地形高度的修改支持使用笔刷,其他几种由于自已没有需要就偷了个懒,后期会补上。 1.笔刷   之前在 自定义笔刷 这篇文章中讲到了自定义笔刷的思路,这里就不多说了,只说怎么创建一张图片用作笔刷。   首先自己制作的笔刷图片一定要带透明通道,推荐使用png格式,图片的alpha值也就代表了笔刷在对应位置的强度,下面这张图片是个最常用的一种笔刷,但由于自己不会做图,实际运用时使用这张图效果不怎么好。这张图中心透明度高,越往外越低,用这张图做地形高度的修改也就是一个中间高外围低的效果。   图片制作完成后导入unity,设置图片的Import Setting如下。   导入并设置完成后,使用自己工程加载资源的方式加载这些贴图