コード例 #1
0
 public void Destroy()
 {
     if (mSceneMask != null)
     {
         GameObject.Destroy(mSceneMask.gameObject);
         mSceneMask = null;
     }
     mDarkExcludeList = null;
 }
コード例 #2
0
    /// <summary>
    /// 使场景变暗
    /// </summary>
    /// <param name="excludeobjs"></param>
    public void DarkenScene(uint[] excludeobjs, float alpha = 0.7f)
    {
        GameObject cameraobj = CameraController.Instance.CurCamera.gameObject;

        //场景变暗
        if (mSceneMask == null)
        {
            mSceneMask = cameraobj.AddComponent <SceenMask>();
        }
        mSceneMask.enabled = true;
        mSceneMask.SetAlpha(alpha);
        //排除某些物体
        SceneObjManager objMng = SceneManager.Instance.GetCurScene().GetSceneObjManager();

        mDarkExcludeList.Clear();
        foreach (uint instid in excludeobjs)
        {
            ObjectBase obj = objMng.FindObject(instid);
            if (obj == null)
            {
                continue;
            }
            VisualObject vObj = obj as VisualObject;
            if (vObj == null)
            {
                continue;
            }
            if (vObj.OriginalMtl == null)
            {
                continue;
            }

            DarkTask task = new DarkTask();
            task.instID = instid;
            List <int> q = new List <int>();
            for (int i = 0; i < vObj.OriginalInstMtl.Length; ++i)
            {
                Material mtl = vObj.OriginalInstMtl[i];
                if (mtl == null)
                {
                    continue;
                }
                q.Add(mtl.renderQueue);
                mtl.renderQueue = 4000 + 1;
            }
            task.queue = q.ToArray();
            mDarkExcludeList.Add(task);
        }
    }