unity3d 脚本所挂的物体_unity3d 脚本控制物体绑定父物体 - CSDN
精华内容
参与话题
  • Unity3d基础知识和方法

    2019-07-11 18:11:00
    1.Mathf.Abs(Screen.height * 1.0f / Screen.width - 3.0f / 4)-------Screen类下 2.string filePath = Application.persistentDataPath + "/picture.jpg";-------Application类下 3.WaiteForWWW(...

    1.Mathf.Abs(Screen.height * 1.0f / Screen.width - 3.0f / 4)-------Screen类下

    2.string filePath = Application.persistentDataPath + "/picture.jpg";-------Application类下

    3. WaiteForWWW("https://wx.qimengkeji.com.cn/ppg_server/xingwawa/notice.txt", (www) =>  ------WWW类
            {
                string s = www.text;
                if (!showNoticed && !s.Equals(""))
                {
                    //if (PlayerPrefs.GetString("notice") != s)
                    {
                        showNoticed = true;
                        PlayerPrefs.SetString("notice", s);
                        noticeUi.GetChild(0).GetChild(0).GetChild(0).GetChild(0).GetComponent<Text>().text = s;
                        noticeUi.gameObject.SetActive(true);
                    }
                }
            });

    4. if (File.Exists(filePath))
            {
                byte[] bytes = File.ReadAllBytes(filePath);
                Texture2D texture = new Texture2D(128, 128);
                texture.LoadImage(bytes);
                Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
                panel.transform.GetChild(1).GetChild(2).GetComponent<Image>().sprite = sprite;
            }

    5.  Debug.Log(www.text) ------log输出

    6.  PlayerPrefs.SetString("playerId", www.text);-------PlayerPrefs类,本地持久化

    7. JsonData jsonData = JsonMapper.ToObject(WWW.UnEscapeURL(www.text));

    8.  this.LoadTexture(WxAuthorize.IconUrl(WWW.UnEscapeURL(s[1])), (texture2D) => {
                        Sprite sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), new Vector2(0, 0));
                        panel.transform.GetChild(1).GetChild(2).GetComponent<Image>().sprite = sprite;
                        string filePath = Application.persistentDataPath + "/picture.jpg";
                        //filePath = Application.dataPath + "/picture.jpg";
                        byte[] bytes = texture2D.EncodeToPNG();
                        File.WriteAllBytes(filePath, bytes);
                    });

    9.  AndroidJavaObject _ajc= new AndroidJavaObject("com.jing.unity.Unity2Android");  --------jni调用
            bool success;
            success = _ajc.Call<bool>("joinQQGroup","yu16-R4oVeHl8CBuwAiaBklC-qgDunel");
            //  success = _ajc.Call<bool>("openApp", "mqqopensdkapi://bizAgent/qm/qr?url=http://qm.qq.com/cgi-bin/qm/qr?from=app&p=android&k=yu16-R4oVeHl8CBuwAiaBklC-qgDunel");
            Debug.Log("QQGroup");  

    10. SceneManager.LoadScene("start");----------------------SceneManager类

    11.JsonData jsonData = new JsonData();

            foreach (int i in Player.GetAnimals().Keys)
            {
                if(1==Player.GetAnimals()[i])
                {
                    JsonData jsonData2 = new JsonData();
                    jsonData2["level"] = 1;
                    jsonData[Player.PetNameMap()[i]] = jsonData2;
                }
               
            }

            string strJson = jsonData.ToJson();
            string url = "https://wx.qimengkeji.com.cn/ppg_server/xingwawa/index.php?m=xingwawa&a=set_pet_info&id=" +              PassParameter.playerId + "&pet_info=" + WWW.EscapeURL(strJson);
            m.WaiteForWWW(url, (www) => Debug.Log(www.text));

            Debug.Log(strJson);

    12. if(!(Application.internetReachability == NetworkReachability.NotReachable))  -----------NetworkReachability类

    13.col = GameObject.Find("groundInstance");
            for (int i = 0; i < transform.childCount; i++)  ---------------------------------Transform类

    14. public void LateUpdate() {   -----------------------监听键盘输入
            base.LateUpdate();    if (Input.GetKey("a"))

    15.transform.position和transform.localPosition区别

    1. position是根据世界原点为中心
    2. localPosition是根据父节点为中心,如果没有父节点,localpositon和position是没有区别的

    16.virtual protected void OnCollisionEnter(Collision collision)==================碰撞检测
        {
            Character c = collision.gameObject.GetComponent<Character>();

    17.GetComponent<Rigidbody>()

    18. GetComponent<Rigidbody>().AddForce(collisionDirection * global.instance.bumperForce * a);

    19. string names = PlayerPrefs.GetString("names");=================PlayerPrefs类

    20.//获取到按钮

    btn = GameObject.Find(“Button”).GetComponent<Button> ();

    //给按钮添加监听事件

    btn.onClick .AddListener (BtnClick);

    void BtnClick() { //按钮响应事件

    Debug.Log (“btn.onClick .AddListener ()”);

    }    

    21.

    Slider是滑动条,Slider的属性如图所示:

    Slider slider ;

    void Star t () {

    //获取到Slider组件

    slider = GameObject.Find(“Slider ”).GetComponent<Slider> ();

    //添加监听事件

    slider.onValueChanged.AddListener(SliderValueChange);

    }

    //  事件响应

    public voidSliderValueChange (float value){

    Debug.Log (“value = “+value);

    }
    22.

    private void OnApplicationQuit()
        {
            SocketManager.Instance.Close();
        }

        private void OnApplicationFocus(bool focus)
        {
            if(focus)
            {
                print("OnApplicationFocus true");
            }else
            {
                print("OnApplicationFocus false");
            }
        }

        private void OnApplicationPause(bool pause)
        {
            if (pause)
            {
                print("OnApplicationPause true");
            }
            else
            {
                print("OnApplicationPause false");
            }
        }

    23.挂载到游戏物体的一个脚本xxx.cs

    其中:this指当前脚本。transform当前物体的transform组件。gameObject当前脚本所挂的物体

     

    展开全文
  • 初试Unity 3D——理解U3D的组件和脚本

    千次阅读 2016-11-21 13:21:04
    哈哈,昨晚弄清楚了U3D的组件到底是怎么个机制,今天中午就通过写博客来梳理一遍吧!...其实,我们说的的物体其实就是一个类,对应的是GameObject类,创建一个游戏物体也即是“new”了一个gameObject,只

    哈哈,昨晚弄清楚了U3D的组件到底是怎么个机制,今天中午就通过写博客来梳理一遍吧!

    1、首先,一个游戏之中会有很多的游戏场景(Scene),游戏场景中有很多的游戏物体(GameObject),包括摄像机、灯光、立方体等。这就构成了一个游戏的主体(当然还有脚本,待会再说)。其实,我们所说的的物体其实就是一个类,对应的是GameObject类,创建一个游戏物体也即是“new”了一个gameObject,只不过这个步骤由引擎来完成的,不需要开发人员来完成。

    2、理解了游戏物体,我们在来谈一谈他的好基友游戏组件。其实这么说不太恰当,因为游戏物体和组件的关系并不是同级的,可以简单的这么说,游戏组件构成了游戏物体,而且不同的物体拥有不同的组件,但是所有的物体都有的组件就是Trasform。选中游戏物体可以在属性面板看到当前物体所拥有的组件,当然我们也可以给游戏物体添加组件。你也许会问,那么组件又是什么东西啊?组件也是类!!!学过面向对象编程语言的人都知道,我们可以在一个类(Object)中声明其他类(Test)类型的应用,Test test,在这里,Object就是游戏物体类,而Test就是一个组件,这个操作其实就是给object添加了一个组件(属性),所以我们就可以在属性面板上通过滑动来更改物体的属性了。

    3、脚本也是组件,不过他是比较特殊的,因为在这个脚本里面可以做很多事情,比如获取当前挂载的游戏物体,获取其他游戏物体,获取游戏物体的组件,控制组件属性。下面举例子(小白纯手写,没有参照,代码如果错了不要喷哈)

    比如:有物体a_Object,b_Object,脚本a_Script,脚本b_Script,分别挂在在物体a_Object,b_Object上。

    在a_Script中:
    获取a_Object物体:
    this,gameObject;
    获取a_Object物体组件:
    gameObject.GetCompoment<>Transform.Translate();
    这句话的意思就是通过一个游戏物体获取他的组件对象,然后用其组件对象来调用组件里面的方法,使游戏物体发生移动
    获取b_Object物体:
    GameObject b=GameObject.Find(“b_Object”);
    获取b_Object物体的组件:
    Transform b_transform=b.GetComponent<>Transform.Translate();

    当然也可以使用变换属性的方法来移动物体:
    gameObject.transform.position=new Vector3(x,y,z);

    记性不好,代码就不准了,其实还有很多获取游戏对象和游戏组件的方法,到时候我再整理出来。

    展开全文
  • Unity3D中通过脚本实现获取当前场景中拥有某个脚本的所有物体 脚本名称[] enemies = Object.FindObjectsOfType&lt;脚本名称&gt;();

    Unity3D中通过脚本实现获取当前场景中拥有某个脚本的所有物体

    脚本名称[] enemies = Object.FindObjectsOfType<脚本名称>();

    展开全文
  • unity如何查找某个脚本挂在了哪些物体

    万次阅读 多人点赞 2016-07-26 20:55:28
    在开发中往往会遇到一个问题:不知道整个场景中究竟有哪些物体挂载了某一个脚本。如果挨个查找太麻烦了,下面有一种方法可以快速找到解决这个问题。 在unity的Window里有一项Editor tests runner 选择这个会出现一...

    在开发中往往会遇到一个问题:不知道整个场景中究竟有哪些物体挂载了某一个脚本。如果挨个查找太麻烦了,下面有一种方法可以快速找到解决这个问题

    在unity的Window里有一项Editor tests runner 选择这个会出现一个窗口:如下图:

    然后点击创建脚本会有脚本自动创建在project里的Editor下。之后我们要写两个脚本(如下图)



    这两个脚本代码,一个是用来盛放要被找的那些物体另个是盛放你要来查找被物体挂载的脚本:

    盛放物体的代码:

    using UnityEngine;
    using UnityEditor;
    public class FindMissingScriptsRecursively : EditorWindow
    {
        static int go_count = 0, components_count = 0, missing_count = 0;
    
        [MenuItem("Window/FindMissingScriptsRecursively")]
        public static void ShowWindow()
        {
            EditorWindow.GetWindow(typeof(FindMissingScriptsRecursively));
        }
    
        public void OnGUI()
        {
            if (GUILayout.Button("Find Missing Scripts in selected GameObjects"))
            {
                FindInSelected();
            }
        }
        private static void FindInSelected()
        {
            GameObject[] go = Selection.gameObjects;
            go_count = 0;
            components_count = 0;
            missing_count = 0;
            foreach (GameObject g in go)
            {
                FindInGO(g);
            }
            Debug.Log(string.Format("Searched {0} GameObjects, {1} components, found {2} missing", go_count, components_count, missing_count));
        }
    
        private static void FindInGO(GameObject g)
        {
            go_count++;
            Component[] components = g.GetComponents<Component>();
            for (int i = 0; i < components.Length; i++)
            {
                components_count++;
                if (components[i] == null)
                {
                    missing_count++;
                    string s = g.name;
                    Transform t = g.transform;
                    while (t.parent != null)
                    {
                        s = t.parent.name + "/" + s;
                        t = t.parent;
                    }
                    Debug.Log(s + " has an empty script attached in position: " + i, g);
                }
            }
            // Now recurse through each child GO (if there are any):  
            foreach (Transform childT in g.transform)
            {
                //Debug.Log("Searching " + childT.name  + " " );  
                FindInGO(childT.gameObject);
            }
        }
    }

    盛放脚本的代码:

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEditor;
    
    /
    //查找节点及所有子节点中,是否有指定的脚本组件
    /
    public class MonoFinder : EditorWindow
    {
        Transform root = null;
        MonoScript scriptObj = null;
        int loopCount = 0;
    
        List<Transform> results = new List<Transform>();
    
        [MenuItem("Level4/Finder/MonoFinder")]
        static void Init()
        {
            EditorWindow.GetWindow(typeof(MonoFinder));
        }
    
        void OnGUI()
        {
            GUILayout.Label("节点:");
            root = (Transform)EditorGUILayout.ObjectField(root, typeof(Transform), true);
            GUILayout.Label("脚本类型:");
            scriptObj = (MonoScript)EditorGUILayout.ObjectField(scriptObj, typeof(MonoScript), true);
            if (GUILayout.Button("Find"))
            {
                results.Clear();
                loopCount = 0;
                Debug.Log("开始查找.");
                FindScript(root);
            }
            if (results.Count > 0)
            {
                foreach (Transform t in results)
                {
                    EditorGUILayout.ObjectField(t, typeof(Transform), false);
                }
            }
            else
            {
                GUILayout.Label("无数据");
            }
        }
    
        void FindScript(Transform root)
        {
            if (root != null && scriptObj != null)
            {
                loopCount++;
                Debug.Log(".." + loopCount + ":" + root.gameObject.name);
                if (root.GetComponent(scriptObj.GetClass()) != null)
                {
                    results.Add(root);
                }
                foreach (Transform t in root)
                {
                    FindScript(t);
                }
            }
        }
    }
    有了这两个脚本,会发现unity的菜单里会多出一个level4(如图)的选项,然后点击它,会出现一个弹窗。上面那个节点(如图)就是盛放物体的,下面那个脚本类型(如图)就是放脚本的。

    例如下面的案例中,我要查找一个名字叫AsyncImageDownloader的脚本在panoramic这个物体里有多少被挂载了。直接把对应的东西拖进去,然后点击find就会发现在userhead_portrait这个子物体里有这个脚本。



    这种方法可以找到所有父物体下的子物体中所有的挂载。它会遍历整个父物体中个的子物体

    从下图中可以看出在panoramic这个父物体中有575个子物体,它们都被查找了一遍。可见刚才查到只有userhead_portrait上挂载了刚才要找的脚本。


    展开全文
  • 关于场景内物体添加脚本等等的 最麻烦了,而且经常容易丢失 。 现在给新手一个比较好的方法来自动添加脚本。 第一步:在场景内创建一个空物体。给空物体命名为 GameObjectController (也可自行命名)。 创建 ...
  • Unity动态创建空GameObject的方法

    万次阅读 2015-01-19 10:49:44
    GameObject tGO = new GameObject("tGO"); tGO.AddComponent();
  • Unity3d物体添加/删除脚本

    千次阅读 2013-10-25 16:00:26
    Unity中有些脚本一直处于运行状态,虽然可以使用标准判断是否进行处理,但每次判断仍会消耗一定的CPU运算能力。为了避免脚本占用太多的资源,我们只是在需要的时候将其附加到物体上,一旦操作完成就将脚本物体上...
  • Unity3D物体添加点击事件脚本

    万次阅读 2020-09-05 10:34:28
    本段主要是为了学习记录,在Unity中怎么给一个BoxCollider添加事件脚本,以点击事件为例,并且,添加物体事件一些必要的前提。 首先是射线检测部分,如下类 AddEeventMonoTest.cs, 其中初始化阶段准备了 必要的一些...
  • Unity3D之简单的点击拾取

    千次阅读 2016-09-20 10:20:59
    新建一个Cube物体和一个脚本Cube,将Cube脚本挂到Cube物体上,代码如下:using UnityEngine; using System.Collections; public class Cube : MonoBehaviour { void OnTouched() { Debug.Log("该物体被选中...
  • Unity3D脚本:隐藏GameObject子物体

    千次阅读 2014-02-08 18:23:44
    [C#] 纯文本查看 复制代码 ? 1 gameObject.renderer.enabled = false 或 [C#] 纯文本查看 复制代码 ? 1 gameObject.active = ...隐藏子对象
  • 在实际的脚本编程中,使用查找方法,调用对象,是不可避免的,但是一般耗时的并且不可避免的代码调用,都放在初始化函数当中, 这也就是为什么游戏当中初始化的时间很长的原因,当然也可以避免游戏初始化时间过长,...
  • //向上运动——W if(Input.GetKey(KeyCode.W)) { print("w"); transform.Translate(Vector3.up * Time.deltaTime * 1); } //向下运动——S if(Input.GetKey(KeyCode.S)) ... transform.Trans
  • Unity 按钮添加OnClick事件

    万次阅读 2019-06-01 18:05:18
    1、在Hierarchy面板右键UI>Button 2、创建一个空物体 ...4、把脚本挂在到空物体上 5、将空物体拖到如下图 None(Object) 位置 6、在右侧选择 ButtonClick>Click 方法 7、如下 ...
  • unity 游戏物体自动循环移动脚本

    千次阅读 2016-05-06 16:56:15
    using UnityEngine; using System.Collections; public class SwanMove : MonoBehaviour { private float moveSpeed=4; //swan的移动速度. // Use this for initialization void Start () { //设置天鹅的初始位置. ...
  • Unity3d实现物体围绕某一点进行旋转

    万次阅读 2017-02-21 11:52:22
    1,让一个物体围绕某一点旋转,有几种方法?分别是什么? 答:在这个点处放一个空物体B,则问题变为A绕着B旋转, 方法1:旋转函数transform.Rotate()来实现 ...方法3:A不动,A作为B的子物体,B挂脚本
  • 1、脚本加载的时候执行的代码(脚本挂载在场景内的物体这个物体必须是激活的在它身上脚本激活或者不激活都会被执行) private void Awake() { //即使脚本没有被激活 也会执行 Debug.Log("Awake");...
  • 思路:通过对时间的计算,每隔一段时间让物体旋转,实现来回移动。  float TranslateSpeed = 0.02f;  float TranslateSpeedTime = 0.1f;  void Update () {  TranslateSpeedTime += 0.1f;  ...
  • Unity3d中Object碰撞销毁基本流程

    千次阅读 2018-01-23 17:05:21
    1.新建Unity3d工程,在场景中添加3D Object,选择两个Cube。 2.Object添加后,其Transform中的Position值都为0。将Cube的Y值设置为3,Cube1的Y值设置为1。 3.然后给Cube和Cube1添加刚体Rigibody。其中Cube和cube1...
  • Unity获取物体下的子物体

    万次阅读 2019-05-06 08:53:30
    Unity获取当前物体的所有子物体 (一)通过使用GetComponentsInChildren() 我们首先先创建一个脚本,在其中Start()方法中添加如下代码 void Start () { Transform[] father = GetComponentsInChildren&...
  • Unity3D入门教程】使用C#脚本控制游戏对象

    万次阅读 多人点赞 2017-01-07 16:57:07
    使用C#脚本控制游戏对象,是一项必备的基本技能。Unity3D可以使用的脚本有C#和javascript等。我们主要讲注意力集中在C#上。本文将会介绍怎样使用脚本控制场景中的游戏对象。
1 2 3 4 5 ... 20
收藏数 13,400
精华内容 5,360
关键字:

unity3d 脚本所挂的物体